MCPcopy Create free account
hub / github.com/F-Stack/f-stack / rdbSaveRawString

Function rdbSaveRawString

app/redis-6.2.6/src/rdb.c:432–462  ·  view source on GitHub ↗

Save a string object as [len][data] on disk. If the object is a string * representation of an integer value we try to save it in a special form */

Source from the content-addressed store, hash-verified

430/* Save a string object as [len][data] on disk. If the object is a string
431 * representation of an integer value we try to save it in a special form */
432ssize_t rdbSaveRawString(rio *rdb, unsigned char *s, size_t len) {
433 int enclen;
434 ssize_t n, nwritten = 0;
435
436 /* Try integer encoding */
437 if (len <= 11) {
438 unsigned char buf[5];
439 if ((enclen = rdbTryIntegerEncoding((char*)s,len,buf)) > 0) {
440 if (rdbWriteRaw(rdb,buf,enclen) == -1) return -1;
441 return enclen;
442 }
443 }
444
445 /* Try LZF compression - under 20 bytes it's unable to compress even
446 * aaaaaaaaaaaaaaaaaa so skip it */
447 if (server.rdb_compression && len > 20) {
448 n = rdbSaveLzfStringObject(rdb,s,len);
449 if (n == -1) return -1;
450 if (n > 0) return n;
451 /* Return value of 0 means data can't be compressed, save the old way */
452 }
453
454 /* Store verbatim */
455 if ((n = rdbSaveLen(rdb,len)) == -1) return -1;
456 nwritten += n;
457 if (len > 0) {
458 if (rdbWriteRaw(rdb,s,len) == -1) return -1;
459 nwritten += len;
460 }
461 return nwritten;
462}
463
464/* Save a long long value as either an encoded string or a string. */
465ssize_t rdbSaveLongLongAsStringObject(rio *rdb, long long value) {

Callers 5

rdbSaveStringObjectFunction · 0.85
rdbSaveStreamConsumersFunction · 0.85
rdbSaveObjectFunction · 0.85
rdbSaveAuxFieldFunction · 0.85
RM_SaveStringBufferFunction · 0.85

Calls 4

rdbTryIntegerEncodingFunction · 0.85
rdbWriteRawFunction · 0.85
rdbSaveLzfStringObjectFunction · 0.85
rdbSaveLenFunction · 0.85

Tested by

no test coverage detected