Redis基本命令的一些细节
一、批量删除键
Redis的DEL不支持通配符,但是可以结合Linux的管道和xargs命令自己实现删除所有符合规则的键,比如删除所有符合“test:”开头的键,可以执行:
redis-cli KEYS "test:*" | xargs redis-cli DEL
二、创建键的规范
Redis对于键的名称并没有强制的要求,比较好的实践是“对象类型:对象ID:对象属性",例如"user:1:friends",对于符合单词推荐用"."分割。
为了节约存储空间,也可以使用"u:1:f"来表示"user:1:friends",但是这部分的节约不如可读性重要。
三、String类型的简单记录
一般场景:
- 自增可以做计数器;
- 生成自增ID(不常用);
- 存储数据;
不常用的功能还有:
- 增加/减少指定的整数/浮点数;
- 向字符串尾部添加内容;
- 获取字符串长度;
- 一次设置/获取多个键(MSET/MGET);
- 位操作;
四、Hash类型的简单记录
除了Hash,Redis其他的数据结构还不支持数据类型嵌套。
一般场景:
- 存储一个对象,itemKey为属性名,itemValue为属性值;
- 将多个计数器记录在一个Hash中;
不常用的功能:
- 只获取itemKey或者itemValue(HKEYS);
- 获取字段数量(HLEN);
五、List类型的简单记录;
List内部使用双向链表实现的。双端添加元素的时间复杂度是O(1)。
一般场景:
- 存储对象ID;
- 进行分页查询;
不常用的功能:
- 获得/设置指定索引位置的元素值(LINDEX/LSET);
- 裁剪成指定判断(LTRIM);
- 向列表中插入元素(LINSERT);
- 列表转移,从右边弹出写入左边(RPOPLPUSH);
六、Set类型的简单记录
无序集合,能保存2^32-1个字符串。集合内部使用散列表实现,操作的时间复杂度是O(1)。多个集合之间可以求并集,交集,差集。
一般场景:
- 存储tags;
- 做一些互相关注的场景;
不常用的功能:
- 获得集合中元素的个数(SCARD);
- 进行集合运算并将结果存储(SDIFFSTORE/SINTERSTORE/SUNIONSTORE);
- 随机获得集合中的元素(SRANDMEMBER);
- 从集合中弹出一个元素(SPOP);
七、ZSet类型的简单记录
有序集合是使用散列表和跳跃表(Skip list)实现的,读取的时间复杂度是O(log(N))。 范围读取的时间复杂度是O(log n+m)。n是集合的基数,m是返回的元素数量。
一般场景:
- 存储排行榜;
- 存储点击量排序;
- 按修改时间排序;
不常用的功能:
- 获取元素个数(ZCARD) ;
- 获取指定分数范围内的元素个数(ZCOUNT);
- 删除一个或多个元素(ZREM);
- 按排名范围删除元素(ZREMRANGEBYRANK);
- 按分数范围删除元素(ZREMRANGEBYSCORE);
- 获得元素的排名(ZRANK/ZREVRANK);
- 计算有序集合的交集(ZINTERSTORE);
八、地理位置的简单记录
暂无。
以上是 Redis基本命令的一些细节 的全部内容, 来源链接: utcz.com/z/511427.html