Redis基本命令的一些细节

1、批量删除键

Redis的DEL不支持通配符,可是能够结合Linux的管道和xargs命令本身实现删除全部符合规则的键,好比删除全部符合“test:”开头的键,能够执行:redis

redis-cli KEYS "test:*" | xargs redis-cli DEL

2、建立键的规范

Redis对于键的名称并无强制的要求,比较好的实践是“对象类型:对象ID:对象属性",例如"user:1:friends",对于符合单词推荐用"."分割。bash

为了节约存储空间,也可使用"u:1:f"来表示"user:1:friends",可是这部分的节约不如可读性重要。数据结构

3、String类型的简单记录

通常场景:spa

  • 自增能够作计数器;
  • 生成自增ID(不经常使用);
  • 存储数据;

不经常使用的功能还有:code

  • 增长/减小指定的整数/浮点数;
  • 向字符串尾部添加内容;
  • 获取字符串长度;
  • 一次设置/获取多个键(MSET/MGET);
  • 位操做;

4、Hash类型的简单记录

除了Hash,Redis其余的数据结构还不支持数据类型嵌套。对象

通常场景:排序

  • 存储一个对象,itemKey为属性名,itemValue为属性值;
  • 将多个计数器记录在一个Hash中;

不经常使用的功能:索引

  • 只获取itemKey或者itemValue(HKEYS);
  • 获取字段数量(HLEN);

5、List类型的简单记录;

List内部使用双向链表实现的。双端添加元素的时间复杂度是O(1)。ip

通常场景:字符串

  • 存储对象ID;
  • 进行分页查询;

不经常使用的功能:

  • 得到/设置指定索引位置的元素值(LINDEX/LSET);
  • 裁剪成指定判断(LTRIM);
  • 向列表中插入元素(LINSERT);
  • 列表转移,从右边弹出写入左边(RPOPLPUSH);

6、Set类型的简单记录

无序集合,能保存2^32-1个字符串。集合内部使用散列表实现,操做的时间复杂度是O(1)。多个集合之间能够求并集,交集,差集。

 通常场景:

  • 存储tags;
  • 作一些互相关注的场景;

不经常使用的功能:

  • 得到集合中元素的个数(SCARD);
  • 进行集合运算并将结果存储(SDIFFSTORE/SINTERSTORE/SUNIONSTORE);
  • 随机得到集合中的元素(SRANDMEMBER);
  • 从集合中弹出一个元素(SPOP);

7、ZSet类型的简单记录

有序集合是使用散列表和跳跃表(Skip list)实现的,读取的时间复杂度是O(log(N))。 范围读取的时间复杂度是O(log n+m)。n是集合的基数,m是返回的元素数量。

  通常场景:

  • 存储排行榜;
  • 存储点击量排序;
  • 按修改时间排序;

不经常使用的功能:

  • 获取元素个数(ZCARD) ;
  • 获取指定分数范围内的元素个数(ZCOUNT);
  • 删除一个或多个元素(ZREM);
  • 按排名范围删除元素(ZREMRANGEBYRANK);
  • 按分数范围删除元素(ZREMRANGEBYSCORE);
  • 得到元素的排名(ZRANK/ZREVRANK);
  • 计算有序集合的交集(ZINTERSTORE);

8、地理位置的简单记录

暂无。

相关文章
相关标签/搜索