您的位置:首页 > 数据库 > Redis

Redis基本的数据类型和常用命令

2017-09-29 01:07 921 查看

Redis基本的数据类型和常用命令

关于redis的介绍和redis在windows下的安装问题,博主已经在另一篇博客windows下安装redis进行了介绍,在此就不过多的赘述。

String(字符串类型)

string是redis最基本的类型,一个key对应一个value。

一个键最大能存储512MB

相关命令主要用于管理redis字符串的值

常用命令示例:



set username Rock_R //设置一个key=username value=Rock_R的键值对

exists username  //检查是否存在key= username的键值对

get username  //获取key=username 的value

dump username //序列化username ,并返回被序列化的value

rename username myname //重新将key=username 的键值对命名为myname

get myname //获取key=myname 的value

del myname //删除key=myname的键值对


Hash(哈希)

Redis hash 是一个键值对集合。

Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。

Redis中每个hash可以储存(2^32)-1键值对(40多亿)



127.0.0.1:6379>hset user Rock_R 123 //在field=user 建立一个key=Rock_R value=123的射映
(integer) 1
127.0.0.1:6379>hget user Rock_R //获取field=user下key=Rock_R的value值
"123"
127.0.0.1:6379> hmset user Rock_A 123 Rock_B 456 //同时设置多个值
OK
127.0.0.1:6379> HGETALL user //得到user下所有的值
1) "Rock_R"
2) "123"
3) "Rock_A"
4) "123"
5) "Rock_B"
6) "456"
127.0.0.1:6379> hexists user Rock_R //判断user下是否存在key=Rock_R
(integer) 1
127.0.0.1:6379> HKEYS user //获取user下的所有key值
1) "Rock_R"
2) "Rock_A"
3) "Rock_B"
127.0.0.1:6379> hvals user //获取user下所有的value值
1) "123"
2) "123"
3) "456"
127.0.0.1:6379> hdel user Rock_R //删除user下的Rock_R
(integer) 1
127.0.0.1:6379> HGET user Rock_R //判断是否删除成功
(nil)
127.0.0.1:6379> HDEL user Rock_A Rock_B //同时删除user下的Rock_A Rock_B
(integer) 2
127.0.0.1:6379> HGETALL user //判断是否删除成功
(empty list or set)


列表(List)

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

Redis当向列表添加值时,最后添加的总是第一个取出。同理,最先添加的,最后取出。





127.0.0.1:6379> lpush user Rock_A //向列表user里面添加value=Rock_A
(integer) 1
127.0.0.1:6379> lpush user Rock_B //同上
(integer) 2
127.0.0.1:6379> lpush user Rock_C //同上
(integer) 3
127.0.0.1:6379> lpush user Rock_D //同上
(integer) 4
127.0.0.1:6379> lrange user 0 4 //取出列表user下角标由0-4的值
1) "Rock_D"
2) "Rock_C"
3) "Rock_B"
4) "Rock_A"
127.0.0.1:6379> lindex user 2 //取出列表user下索引为2的值
"Rock_B"
127.0.0.1:6379> blpop user 60 //获取并移除列表user的第一个值,如果列表没有元素会阻塞列表直到等待超过60或发现可弹出元素为止。
1) "user"
2) "Rock_D"
127.0.0.1:6379> brpop user 60 //获取并移除列表user的最后一个值。
1) "user"
2) "Rock_A"
127.0.0.1:6379> brpop user name //获取user最后一个值并将其移动到列表名为name之中(将从user中移除)
1) "user"
2) "Rock_B"
127.0.0.1:6379> llen user //获取user的长度
(integer) 1
127.0.0.1:6379> lrange user 0 2 //取出列表user下角标由0-2的值
1) "Rock_C"
127.0.0.1:6379> linsert user after Rock_C Rock_E //向user中同时插入多个值
(integer) 2
127.0.0.1:6379> lrange user 0 2
1) "Rock_C"
2) "Rock_E"


Set(集合)

Redis的Set类型是string类型的无序集合,集合成员是唯一的,这就意味着集合中不能出现重复的数据。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。



127.0.0.1:6379> sadd demo Rock_A  //向demo集合中加入元素Rock_A
(integer) 1
127.0.0.1:6379> sadd demo Rock_B Rock_C //同时向demo集合中加入Rock_B和Rock_C
(integer) 2
127.0.0.1:6379> scard demo //得到集合元素的个数
(integer) 3
127.0.0.1:6379> sdiff demo //得到该集合和空集的差集,即集合本身
1) "Rock_A"
2) "Rock_B"
3) "Rock_C"
127.0.0.1:6379> sadd demo2 Rock_A //向demo2中添加元素Rock_A(这里是向不同的集合添加同一元素是可以的,但不可以像同一个集合添加相同的元素)
(integer) 1
127.0.0.1:6379> sinter demo demo2 //找出集合demo和demo2的交集
1) "Rock_A"
127.0.0.1:6379> SISMEMBER demo Rock_A //判断在demo中是否存在元素Rock_A
(integer) 1
127.0.0.1:6379> SMEMBERS demo //列出集合demo的所有元素
1) "Rock_B"
2) "Rock_A"
3) "Rock_C"
127.0.0.1:6379> sdiff demo demo2 //列出demo和demo2的差集
1) "Rock_B"
2) "Rock_C"
127.0.0.1:6379> sadd demo Rock_D //向集合demo2添加元素Rock_D
(integer) 1
127.0.0.1:6379> sunion demo demo2 //求出demo和demo2的并集
1) "Rock_A"
2) "Rock_B"
3) "Rock_D"
4) "Rock_C"


zset(sorted set:有序集合)

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

zset的成员是唯一的,但分数(score)却可以重复。



127.0.0.1:6379> zadd room 0 Rock_S //向room集合中添加分数为0,value=Rock_S的元素
(integer) 1
127.0.0.1:6379> ZADD room 2 Rock_A 3 Rock_B 1 Rock_C //向集合room中同时插入多个元素
(integer) 3
127.0.0.1:6379> zcard room //得到集合元素个数
(integer) 4
127.0.0.1:6379> zcount room 0 4 //得到集合指定区间集合个数
(integer) 4
127.0.0.1:6379> ZRANGE room 0 4 WITHSCORES //按照分数从小到大进行排列
1) "Rock_S"
2) "0"
3) "Rock_C"
4) "1"
5) "Rock_A"
6) "2"
7) "Rock_B"
8) "3"
127.0.0.1:6379> zrank room Rock_R
(nil)
127.0.0.1:6379> zrank room Rock_A //查询Rock_A的分数
(integer) 2
127.0.0.1:6379> ZREMRANGEBYSCORE room 0 2 //删除0-2分数区间的元素
(integer) 3
127.0.0.1:6379> zrange room 0 4 WITHSCORES //检查是否删除成功
1) "Rock_B"
2) "3"


以上就是redis的基本类型,以及其对应的一些命令操作。如果还想了解其他更多关于redis的内容,欢迎查看博主的其他博客内容
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  redis 数据