incr <key>将 key 中储存的数字值增1只能对数字值操作,如果为空,新增值为 decr <key>将 key 中储存的数字值减1只能对数字值操作,如果为空,新增值为-1 mset <key1><value1><key2><value2> ...同时设置一个或多个 key-value对 mget <key1><key2><key3> ...同时获取一个或多个 value msetnx ...
hexists myhash field2 hexists myhash field1 hlen myhash hsetnx myhash1 field3 d hget myhash1 field3 hsetnx myhash field3 d 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 2、hincrby hincrby key field increment #给xxx键的xxx字段值加x 1. 例: HEXISTS myhash2 field1 hincrby myhas...
(1)删除name: del name (2)删除多个key:del k1 k2 k3 下面我先批量增加key:mset k1 v1 k2 v2 k3 v3 然后删除上面增加的key:del k1 k2 k3 3、EXISTS命令 首先我先创建两个k v{name:lrc,age:18}:mset name lrc age 18 然后我判断是否存在name的key和是否存在single的key:exist name ; exit singl...
void incrDecrCommand(client *c, long long incr) { long long value, oldvalue; robj *o, *new; o = lookupKeyWrite(c->db,c->argv[1]); //从数据库中寻找需要修改的key if (o != NULL && checkType(c,o,OBJ_STRING)) return; //如果key的类型为lis, set, zset, hash等, 则直接返回, ...
1、获取key的列表:KEYS pattern 通配符有 ?*[] 和转义 \。 2、key 是否存在: EXISTS key 存在返回 1,不存在返回 0。 3、建立 key 和删除 key:SET key 和 DEL key。 4、根据 key 获取该键所存储的 redis 数据类型:TYPE key。返回是 string、list、hash、set、zset。下面会对这5种返回的 redis 数据类...
举例:缓存 Session、Token、图片地址、序列化后的对象(相比较于 Hash 存储更节省内存)。 相关命令:SET、GET。 需要计数的场景 举例:用户单位时间的请求数(简单限流可以用到)、页面单位时间的访问数。 相关命令:SET、GET、 INCR、DECR。 分布式锁 利用SETNX key value 命令可以实现一个最简易的分布式锁(存在一些缺...
举例:缓存session、token、图片地址、序列化后的对象(相较于Hash存储更节省内存)。 相关命令:SET、GET。 需要计数的场景 举例:用户单位时间的请求数(简单限流可以用到)、页面单位时间的访问数。 相关命令:SET、GET、INCR、DECR。 分布式锁 利用SETNX key value命令可以实现一个最简易的分布式锁(存在一些缺陷,通常不...
redis的hash架构就是标准的hashtable的结构,通过挂链解决冲突问题。 2.1 hash数据结构 /*Hash表一个节点包含Key,Value数据对 */ typedef struct dictEntry { void *key; union { void *val; uint64_t u64; int64_t s64; double d; } v; struct dictEntry *next; /* 指向下一个节点,链接表的方式解决...
另外,incr对string类型,hash类型,sortedSet类型都可以进行操作 blpop blpop相对于lpop有一个好处,可以对多个队列进行优先级操作。 blpop会按照key的排列顺序依次弹出,返回值为key的listname及具体元素值,而且可以设置block时间,原则是先阻塞先服务. $date=date('Ymd',time());//左进左出 ,优先分配一般的车牌号码,...