String类型为最基本的数据类型, 二进制安全. 可以存储任何的数据 ,包含jpg图片, 序列化的对象等等.
对String类型的指令演示命令如下图所示:
设置值就采用set 键 值 的形式
获取值就采用get 键 的形式, 通过键获取值. 如果键相同, 则会自动覆盖原来的值.
下图也演示了, 如果值为整数类型, 可以使用incr 键 的方式对数值进行加一 .
如果数值不是整数, 使用incr函数会报错 , 提示如下 :
(error) ERR value is not an integer or out of range
redis的单个操作都是原子性的(一个事务是不可分割的最小工作单位. 事务中包含的操作,要么全部成功, 要么全部失败. ) . redis的原子性, 使得开发者不用考虑并发的问题, 可以使用incr来实行自增的操作.
String类型之所以能存储二进制数据, 是因为底层的sds动态字符串.
Hash类型为String元素组成的字典, 适用于存储对象,存储对象中的键和值.
演示的命令如下:
给对象初始化赋值, 采用hmset命令, 声明"lilei"为对象, 设置了两个属性"name"和"age".
获取值采用hget 对象名 属性 的方式获取.
修改单一的属性的值,可以用hget 来修改, 也可以用hmset修改多个属性的值.
127.0.0.1:6379> hmset lilei name "LiLei" age 26 title "Senior"
OK
127.0.0.1:6379> hget lilei age
"26"
127.0.0.1:6379> hget lilei title
"Senior"
127.0.0.1:6379> hset lilei title "Pricipal"
(integer) 0
127.0.0.1:6379> hget lilei title
"Pricipal"
127.0.0.1:6379> hmset lilei name "jack" age 28
OK
127.0.0.1:6379> hget lilei title
"Pricipal"
List类型为列表, 按照String元素的插入顺序排序
List类型的演示如下. 给起名为mylist的列表添加了三个元素, 依次添加aaa bbb ccc
使用lrange命令取出, 0 2为取出下标为0到2的三个元素.
可以使用后进先出的特性, 用于最新消息的功能.
127.0.0.1:6379> lpush mylist aaa
(integer) 1
127.0.0.1:6379> lpush mylist bbb
(integer) 2
127.0.0.1:6379> lpush mylist ccc
(integer) 3
127.0.0.1:6379> lrange mylist 0 2
1) "ccc"
2) "bbb"
3) "aaa"
127.0.0.1:6379>
Set为String元素组成的无序集合 , 通过哈希表实现, 不允许重复.
Set的演示代码如下, 往集合中添加数据为sadd, 显示集合中的数据为smembers
127.0.0.1:6379> sadd myset 111
(integer) 1
127.0.0.1:6379> sadd myset 222
(integer) 1
127.0.0.1:6379> sadd myset 333
(integer) 1
127.0.0.1:6379> sadd myset 222
(integer) 0
127.0.0.1:6379> smembers myset
1) "111"
2) "222"
3) "333"
127.0.0.1:6379> sadd myset aaa
(integer) 1
127.0.0.1:6379> sadd myset bbb
(integer) 1
127.0.0.1:6379> sadd myset ccc
(integer) 1
127.0.0.1:6379> smembers myset
1) "333"
2) "222"
3) "111"
4) "ccc"
5) "bbb"
6) "aaa"
为上一个Set类型的有序版本, 通过分数来为集合中的成员进行从小到大的排序.
Sorted Set 演示代码如下:
增加元素的命令为zadd , 第二个参数为集合名称, 第三个参数为排名的分数, 第四个参数为值.
添加成功,会返回1, 失败会返回0. 即使分数相同,值不同也能添加到集合中.
分数越高的, 取出来时, 越靠后.
127.0.0.1:6379> zadd myzset 3 abc
(integer) 1
127.0.0.1:6379> zadd myzset 1 abd
(integer) 1
127.0.0.1:6379> zadd myzset 2 asd
(integer) 1
127.0.0.1:6379> zadd myzset 2 asd
(integer) 0
127.0.0.1:6379> zadd myzset 1 abt
(integer) 1
127.0.0.1:6379> zrangebyscore myzset 0 3
1) "abd"
2) "abt"
3) "asd"
4) "abc"
Redis的数据类型, 除了以上介绍的五种,还有用于计数的HyperLogLog
和用于支持存储地理位置信息的Geo