+/* Save a key-value pair, with expire time, type, key, value.
+ * On error -1 is returned.
+ * On success if the key was actaully saved 1 is returned, otherwise 0
+ * is returned (the key was already expired). */
+int rdbSaveKeyValuePair(FILE *fp, redisDb *db, robj *key, robj *val,
+ time_t now)
+{
+ time_t expiretime;
+
+ expiretime = getExpire(db,key);
+
+ /* Save the expire time */
+ if (expiretime != -1) {
+ /* If this key is already expired skip it */
+ if (expiretime < now) return 0;
+ if (rdbSaveType(fp,REDIS_EXPIRETIME) == -1) return -1;
+ if (rdbSaveTime(fp,expiretime) == -1) return -1;
+ }
+ /* Save type, key, value */
+ if (rdbSaveType(fp,val->type) == -1) return -1;
+ if (rdbSaveStringObject(fp,key) == -1) return -1;
+ if (rdbSaveObject(fp,val) == -1) return -1;
+ return 1;
+}
+