gofor's blog

  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

Redis数据类型

发表于 2019-01-20 更新于 2020-01-10 分类于 技术 阅读次数: Valine:

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。

图示

redis-strings.png

字符串常用命令
  • 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)

  • 本文作者: gofor
  • 本文链接: https://acehjm.github.io/2019/01/20/Redis之数据类型/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
# redis
Java 性能调优(一)
SpringBoot多模块I18N配置无效,导致No message found under code 'xxx' for locale 'zh_CN_#Hans'问题
gofor

gofor

Programming technology
14 日志
4 分类
14 标签
RSS
GitHub StackOverflow
Creative Commons
© 2016 – 2020 gofor
由 Hexo 强力驱动 v3.9.0
|
主题 – NexT.Pisces v7.3.0
0%