Redis 数据类型
Redis 不仅仅是简单的 key-value 存储器,同时也是一种 data structures server。传统的 key-value 是指支持使用一个 key 字符串来索引 value 字符串的存储,而 Redis 中,value 不仅仅支持字符串,还支持更多的复杂结构,包括列表、集合、哈希表等。
strings
字符串是最基本、最常用的Redis值类型
Redis 字符串是二进制安全的,这意味着一个 Redis 字符串能包含任意类型的数据,例如: 一张经过 base64 编码的图片或者一个序列化的 Ruby 对象。通过这样的方式,Redis 的字符串可以支持任意形式的数据,但是对于过大的文件不适合存入 redis,一方面系统内存有限,另外一方面字符串类型的值最多能存储 512M 字节的内容。
redis-cli strings 基本操作:
- set key value [EX seconds] [PX milliseconds] [NX|XX] 添加一个key-value数据(NX: set 命令只有在没有相同 key 的情况下成功;XX:在有相同 key 值的情况下成功)
- get key 获取key对应的value
- incr key key对应的值+1
- decr key key对应的值-1
- incrby/decrby key increment/decrement key对应的值+/- n
- mset key value [key value …] 一次性完成多个key-value的对应关系
- mget key [key …] 一次性获取多个key的值,返回value数组
lists
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边),lpush 命令插入一个新的元素到头部,而 rpush 命令插入一个新元素到尾部。当这两个操作中的任一操作在一个空的 Key 上执行时就会创建一个新的列表。相似的,如果一个列表操作清空一个列表,那么对应的 key 将被从 key 空间删除。
push 一类的命令的返回值为 list 的长度。
- redis-cli lists 基本操作:
- lpush key value [values …] 往列表头部(左边)插入数据,结果为倒序列表
- lrange key start stop 0表示 list 开头第一个,-1 表示 list 的倒数第一个,即最后一个。-2 则是 list 的倒数第二个,以此类推。
- rpush key value [values …] 往列表尾部(右边)插入数据,结果为正序列表
- del key [key] 删除一个key
- lpop/rpop key 获取头部/尾部的第一个元素并删除该元素
一个列表最多可以包含 4294967295(2 的 32 次方减一)个元素,这意味着它可以容纳海量的信息,最终瓶颈一般都取决于服务器内存大小。
- 阻塞操作
- blpop/brpop key [key …] timeout 阻塞获取头部/尾部的第一个元素并删除该元素(list不存在时阻塞超时后返回nil)
- 使用场景
List 元素是线性有序的,适合用来存储聊天记录等顺序结构的数据。