Redis 的数据类型

一些命令需要结合 redis 的数据类型来说。

Redis 4.0 之前有5种数据类型,分别是:字符串(string)、散列(hash)、列表(list)、集合(set)、有序集合(zset)。

在 4.0 版本,Redis 新加了一种 stream 的类型。暂且先不说,以后会新开文章具体讲解。

基本知识:

  1. 数据类型不支持嵌套,即所有的类型的元素只能是字符串,不能是散列和集合或者有序集合。
  2. 除了字符串之外,每种数据类型的命令都有一个开头。
    1. 散列(h)
    2. 列表(l)
    3. 集合(s)
    4. 有序集合(z)
    5. stream(x)

字符串

Redis 的字符串使用了 Redis 自己实现的是一个字符串结构叫简单动态字符串:SDS,simple dynamic string

Redis 中的字符串的最大存储是 512M。

并且可以当作数字来使用的。比如 incr、incrby、decr、decrby 都是基于数字的值进行操作的。我们可以通过 incr 来实现一个计数器。或者是自增数字发生器。

散列

散列的底层是用字典实现的。并且其就是一个字典结构。可以构成: field:value 的格式。

如下图所示:

列表

列表底层是使用双向链表实现的。通过列表可以实现队列功能。

通过以下命令可以通过列表实现数组的功能:

lindex key index
lset key index value

rpoplpush 可以实现原子性地将一个数据从表尾放到另一个或者自己的表头。

集合

Redis 中的集合与数学上的集合具有相同的性质,无序且重复。并且 Redis 提供了 diff、inter、union 三种集合操作的命令。

有序集合

有序集合使用跳跃表实现。集合是无序的,并且值不能重复。集合这种数据类型对于很多场景是不适用的。比如说,排行榜。于是 Redis 提供了一种有序集合类型。有序集合是一个每个元素都有一个分值代表在集合中的排行的一种数据结构。如果分值相同,那么按照元素的字典序进行排序。

什么是跳跃表,可以参见这篇文章:http://blog.jobbole.com/111731/

最新文章

  1. java的英文词频算法
  2. FTP连接时出现“227 Entering Passive Mode” 的解决方法
  3. Windows Phone8 中如何引用 SQLite 数据库
  4. Spring MVC 之类型转换(五)
  5. 延迟加载、异步加载js
  6. ARM各种版本号知识以及型号的发展(三星为例)
  7. PB出现中文乱码
  8. LA 2572 (求可见圆盘的数量) Kanazawa
  9. HttpComponents 学习的两个重要文档
  10. jQuery Animation实现CSS3动画
  11. 用showModalDialog写的简单弹出框传参与反参
  12. 【框架学习与探究之宿主服务--Topshelf】
  13. Zabbix Agent for Windows部署(五)
  14. 优秀设计师应当知道的20大UI设计原则
  15. Java并发知识分享
  16. <Listener>HttpSessionListener和HttpSessionAttributeListener区别
  17. Docker安装Python3.5
  18. python-day36--并发编程之多线程
  19. jQuery截取字符串、日期字符串转Date、获取html中的纯文本
  20. 【week9】psp

热门文章

  1. 菜鸟系列Fabric源码学习 — 区块同步
  2. python numpy学习
  3. java静态初始化块(静态域)
  4. Chapter 02—Creating a dataset(Part1)
  5. html元素是否包含另外一个元素,以及classList属性
  6. 【经验分享】如何搭建本地MQTT服务器(Windows ),并进行上下行调测
  7. luogu P1168 中位数 |树状数组+二分
  8. 学习ThinkPHP的第23天---门面、钩子与行为
  9. iOS RSA加解密签名和验证
  10. 在Linux中配置jdk,Tomcat,MySQL