Redis数据结构
Redis支持5种数据结构:
string:字符串hash:哈希表list:列表set:集合sorted set:有序集合,和无序集合的区别就是插入元素时要指定一个用于排序的分数(分数可重复)
Redis提供了一些操作这些数据结构的命令,下面从使用的角度对一些常用的操作进行介绍。
Key 键
Key更通俗的可以近似理解为变量名,在Redis中,我们基于某一种数据结构创建一个变量,我们需要提供一个变量名,以供对这个变量(键)进行操作。常用的命令如下。
set 创建键
get 获取
del 删除键
exists 检查某个键是否存在
type 查看键的数据类型
expire 设置键的过期时间
例子:查看当前库中所有键
keys *
注:生产环境务必慎用keys *!该命令会返回当前库中所有的键,如果键特别多,会消耗大量性能,可能造成Redis卡死。
例子:创建一个字符串,然后获取这个字符串的值
127.0.0.1:6379> set msg hello
OK
127.0.0.1:6379> get msg
"hello"
例子:删除刚刚创建的字符串
127.0.0.1:6379> del msg
(integer) 1
例子:检查键是否存在
127.0.0.1:6379> exists msg
(integer) 1
例子:查看键对应的数据的类型
127.0.0.1:6379> type msg
string
例子:设置键的销毁时间(单位是秒)
127.0.0.1:6379> expire msg 3
(integer) 1
127.0.0.1:6379> exists msg
(integer) 0
数据结构及其操作
Redis中对数据结构的操作实际上很简单,下面通过例子演示一些常用的操作,具体命令可以参考redis文档。
字符串
设置一个字符串Key:
127.0.0.1:6379> set str "hello"
OK
取出字符串的值:
127.0.0.1:6379> get str
"hello"
哈希表
为哈希表设置一个值:
127.0.0.1:6379> hset ht key1 "val1"
(integer) 1
为哈希表设置多个值:
127.0.0.1:6379> hmset ht key2 "val2" key3 "val3"
OK
取出哈希表中的值:
127.0.0.1:6379> hget ht key1
"val1"
127.0.0.1:6379> hget ht key2
"val2"
127.0.0.1:6379> hget ht key3
"val3"
列表
插入列表(栈操作入栈):
127.0.0.1:6379> lpush list "val1"
(integer) 1
127.0.0.1:6379> lpush list "val2"
(integer) 2
127.0.0.1:6379> lpush list "val3"
(integer) 3
弹出列表(栈操作出栈):
127.0.0.1:6379> lpop list
"val3"
注:lpush和lpop有对应的rpush和rpop,两种结合起来可以实现栈和队列。
读取列表:
127.0.0.1:6379> lrange list 0 2
1) "val2"
2) "val1"
集合
集合插入:
127.0.0.1:6379> sadd s "aaa"
(integer) 1
127.0.0.1:6379> sadd s "bbb"
(integer) 1
127.0.0.1:6379> sadd s "ccc"
(integer) 1
读取集合所有元素:
127.0.0.1:6379> smembers s
1) "bbb"
2) "ccc"
3) "aaa"
有序集合
向有序集合插入元素:
127.0.0.1:6379> zadd z 0 "aaa"
(integer) 1
127.0.0.1:6379> zadd z 0 "bbb"
(integer) 1
127.0.0.1:6379> zadd z 1 "ccc"
(integer) 1
127.0.0.1:6379> zadd z 2 "ddd"
(integer) 1
按照分数排序读取有序集合的元素:
127.0.0.1:6379> zrangebyscore z 0 1000
1) "aaa"
2) "bbb"
3) "ccc"
4) "ddd"
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。