Redis数据类型
Redis常用数据类型:
- strings:二进制安全的字符串;
- lists:根据插入顺序排序的字符串元素的集合,基本上是链表;
- sets:唯一的,未排序的字符串元素的集合;
- zsets:有序集合,没个字符串元素都与一个浮点数关联,称为分数,元素总是按分数排序;
- hashs:散列或字典,是由与值相关联的字段组成的映射,字段和值都是字符串;
Redis键
Redis键是二进制安全的,这意味着我们可以使用任何二进制序列作为键,从字符串(包括空字符串)到jpeg等文件的内容都是有效键。
关于键的一些使用原则:
- 避免使用很长的键:键的长度不超过1024位,过长的键对内存不友好,即使当前任务是匹配最大值,在数据库中查找键也需要几次昂贵的比较,对于一些过长的键,可以使用hash之后的结果作为键。
- 避免使用过短的键:比如“u1000flw”和“user:1000:flowers”,虽然较短的键可以减小内存空间的使用,但是从可读性方面会差很多。
- 尽量使用格式化键:像“object-type:id”这种格式,如“user:1000”,点或短划线通常用于多词字段,如“common:12345:reply.to”或“common:12345:reply-to”。
- 允许的键的最大大小为512M。
字符串(strings)
Redis中的字符串类型键值都是字符串,即将一个字符串映射到另外一个字符串。值的字符串类型可以是各种类型的字符串,如二进制数据、空字符串、jpeg图像等。字符串类型值的大小不能超过512M。
图示
字符串常用命令
- SET:设置字符串值(如果该键对应的值已存在,直接覆盖);
- GET:检索字符串值;
- INCR:解析字符串值作为整数,以一增加它,最后将获得的值作为新的值。
INCR具有原子性,即使是对同一个键的多个客户的,永远也不会进入竞争状态。例如,在同一时间,不会发生客户端1和客户端2同时读取到“10”,两者都增加到11,并设置新值为11。执行增量操作时,根据原子性最终值为12。
其它命令如DECR为自减1操作,GETSET命令将键设置为新值并返回旧值,MSET和MGET分别用于批量设置和批量获取值。
改变和查询键空间
有些命令没有在特定类型上定义,这些命令为通用命令,与键交互时非常有用,因此可以与任何类型的键一起使用。例如EXISTS命令返回1或0表示数据库中是否存在给定的键,而DEL命令删除键和值(不管值类型),DEL本身返回0或1,具体取决于键是否存在,TYPE命令则返回指定键中值的类型。
Redis过期时间
EXPIRE过期时间也是一个与键类型无关的功能。可以为所有的键设置有效期,当有效期过去时,键会自动销毁,和用户主动调用DEL命令一样。
关于EXPIRE的一些说明,可以使用秒或毫秒进行设置,但是到期时间解析度始终为1毫秒,有关过期时间会被复制并保存在磁盘上,当Redis服务器保持停止时,这个时间实际上会消失(Redis会保存键过期的日期)。
列表(lists)
- 本文链接: https://acehjm.github.io/2019/01/20/Redis之数据类型/
- 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!