对象命令
Redis中操作命令分为两种,一种可以命令可以对任何类型的键执行。
如:
DEL,RENAME,TYPE,OBJECT。
一种只对特定键执行:
SET,GET,APPEND,STRLEN只能堆字符串命令键执行。
HDEL,HSET,HGET,HLEN只能哈希键执行。
RPUSH,LPOP,LINSERT,LLEN只能对列表键执行。
SADD,SPOP,SINTER,SCARD只能对集合键执行。
ZADD,ZCARD,ZRANK,ZSCORE只能对有序集合键执行。
当对键执行其不支持的命令时机会报错
WRONGTYPE OPERATION against a key holding the wrong kink of value。
Redis中操作命令分为两种,一种可以命令可以对任何类型的键执行。
redis通过redisObject的type属性进行检查。
对象内存回收
Redis通过引用技术法对内存进行回收。
对象共享
对象引用技术属性可用于对象共享,当不同的键要保持同一数值的对象时,则可共享对象。
步骤:
1.键的值指针指向一个现有的值对象
2.被共享的值对象引用技数加1
对象共享可节约内存。Redis会共享值为0~9999的字符串对象。
空转时长
redisObject包含type,encoding,ptr,refcount,lru五个属性。
lru记录对象最后一次被命令程序的访问时间。
空转时长为当前时间减去lru记录的时间,用OBJECT IDLETIME可以查询空转时长。
如果redis设置了maxmemory,且回收内存算法为volatile-lru或allkeys-lru。则当内存超过maxmemory时,
空转时长值较高的部分键会被优先释放回收内存。