Redis Shell命令行操作五种value数据类型
Redis使用键值存储数据,key必须是字符串,value支持五种数据类型,最新版本又新增加了两种这里暂不介绍。下面介绍redis的一些基本命令的使用。
首先启动redis并进入客户端
redis-server /usr/local/redis-3.0.0/redis.conf
redis-cli
Redis中的命令不区分大小写。
1.String类型
基本命令及String类型,格式<key:value>
序号 | 命令 | 描述 | 实例 |
---|---|---|---|
1 | help | 帮助命令 | help set |
2 | select | Redis默认有16个库通过select命令切换,库之间隔离,默认登录0号库 | select 1 |
3 | del | 删除key | del a |
4 | keys | 查询库中已存在的key | keys * keys a* |
5 | exists | 查看当前库中是否存在key,存在返回1 | exists a |
6 | set | 创建key,value | set a 1 |
7 | get | 查看key的value值 | get a |
8 | mset | 一次创建多个key,value | mset a 1 b 2 |
9 | mget | 一次查看多个key的value值 | mget a b |
10 | append | 向key中追加字符串 | append a x |
11 | strlen | 返回key的value的长度 | strlen a |
12 | incr | key的value加1 | incr b |
decr | key的value减1 | decr b | |
incrby | key的value按步长加,根据值的正负数 | incrby b 2 | |
decrby | key的value按步长减,根据值的正负数 | decrby b 2 | |
incrbyfloat | key的value加减,根据值的正负数 | incrbyfloat b 0.9 |
注:12的命令要求value的值可以进行加减运算
2.Hash类型
Hash类型的key为字符串,value为key1:value1。
格式<key:<key1:value1,key2:value2,...>>
,关键字h
序号 | 命令 | 描述 | 实例 |
---|---|---|---|
13 | hset | 创建key,value(key1,value1) | hset user01 name jack |
14 | hget | 查看键key的value中的key的值 | hget user01 name |
15 | hmset | 一次创建key的多个value | hmset user01 name tom age 10 |
16 | hmget | 一次查看多个key的value中的key的值 | hmget user01 name age |
17 | hexists | 查看键key的value中key是否存在,存在返回1 | hexists user01 name |
18 | hdel | 删除键key的value中的某个key | hdel user01 name |
19 | hincrby | 键key的value中的某个key按步长增加,也可负数减 | hincrby user01 age 2 |
20 | hkeys | 显示键key的value中的所有key | hkeys user01 |
21 | hvals | 显示键key的value中的所有value | hvals user01 |
22 | hlen | 显示键key的value中的key的个数 | hlen user01 |
23 | hgetall | 显示键key的value中所有的键值对 | hgetall user01 |
hincrbyfloat | 键key的value中的某个key加减,根据值的正负数 | hincrbyfloat user01 age 2 | |
hsetnx | 键key的value中的key不存在才创建 | hsetnx user01 gender male |
3.List类型
List类型是有序的,采用双向链表LinkedList实现,访问两边数据快中间慢,最多可以有
232−1
2
32
−
1
个元素。
格式<key,<value1,value2,…>>
,关键字l
序号 | 命令 | 描述 | 实例 |
---|---|---|---|
24 | lpush1 | 创建key,value(value1,value2,…) | lpush list1 a b c |
25 | lrange | 查看键key全部元素 | lrange list1 0 -1 |
26 | lindex | 查看键key中下标为0的元素 | lindex list1 0 |
27 | lset | 更改键key中下标为0的元素值 | lset list1 0 xx |
28 | llen | 显示键key的长度,元素个数 | llen list1 |
29 | lpop | 返回并删除键key中最左边的value | lpop list1 |
30 | rpop | 返回并删除键key中最右边的value | rpop list1 |
31 | ltrim2 | 按下标截取键key中的元素 | ltrim list1 0 4 |
brpop | 当给定多个key参数时,按参数key的先后顺序依次检查各个列表,弹出第一个非空列表的尾部元素 | brpop list1 list2 4 |
4.Set类型
Set数据类型不重复,无序,最多可以有
232−1
2
32
−
1
个元素。
格式<key,<value1,value2,…>>
,关键字s
序号 | 命令 | 描述 | 实例 |
---|---|---|---|
32 | sadd | 创建key,value(value1,value2,…) | sadd set1 a b c d |
33 | smembers | 查看键key | smembers set1 |
34 | sismember | 查看键key中是否含有某个value,存在返回1 | sismember set1 a |
35 | srem | 删除键key中的某个value | srem set1 a |
36 | spop | 随机删除键key中的一个元素 | spop set1 |
37 | scard | 显示键key中的元素个数 | scard set1 |
38 | sdiff | 显示key1中元素不存在于key2中的元素 | sdiff set1 set2 |
39 | sinter | 显示key1与key2的交集 | sinter set1 set2 |
40 | sunion | 显示key1和key2的并集 | sunion set1 set2 |
41 | sinterstore | 将key1和key2的交集存入key3中 | sinterstore set3 set1 set2 |
5.SortedSet类型
SortedSet是在Set的基础上增加一个分值并根据这个分值进行排序,它比List更耗内存
①可以改变元素的分值以便于调整元素位置
②使用散列表读取中间数据速度快
③若元素的分值一样则按照ASCII的顺序排列
格式<key,<score1:value1,score2:value2,…>>
序号 | 命令 | 描述 | 实例 |
---|---|---|---|
42 | zadd | 创建key,value(score1:value1,score2:value2,…) | zadd zset1 1 a 2 b |
43 | zscore | 查看key中某个元素的分值 | zscore zset1 a |
44 | zrange | 按下标区间查看key | zrange zset1 0 10 |
45 | zrevrange | 倒序查看key中元素 | zrevrange zset1 0 -1 |
46 | zincrby | key中某个元素的分值增加,负数时为减少 | zincrby zset1 1 a |
47 | zcount | 返回key中分值区间的元素的个数 | zcount zet1 0 4 |
48 | zcard | 返回key中元素个数 | zcard zset1 |
49 | zrem | 删除key中的某个元素 | zrem zset1 a |
50 | zrangebyscore | 返回key中分值包含左右区间的元素 | zrangebyscore zset1 0 4 |
zrangebyscore | ( 不包含区间 | zrangebyscore zset1 0 (4 | |
51 | zadd | +inf 增加元素分值正无穷 | zadd zset1 +inf n |
zadd | -inf 增加元素分值负无穷 | zadd zset1 –inf m | |
52 | zrangebylex3 | 显示元素名称包含左右区间的元素 | zrangebylex zset1 [a [wangww |
53 | zrank | 显示key中某个元素的下标 | zrank zset1 a |
注:redis是按照key来存储数据的,它没有提供按条件查询,但可以使用zrangebyscore和zrangebylex来实现条件查询。
6.键的生存时间
序号 | 命令 | 描述 | 实例 |
---|---|---|---|
54 | expire | expire可以设置一个key的有效时间,生存时间单位是秒。 | expire name 10 |
55 | ttl | ttl是查看key还剩下多少有效时间,默认是永久有效返回-1,当超过有效时间后返回-2。 | ttl name |
56 | persist | persist命令可以取消一个key的剩余时间使之成为永久有效 | persist name |
57 | expireat | expireat可以指定一个key在什么时间失效 | expireat name 1471849200 |
7.发布与订阅
序号 | 命令 | 描述 | 实例 |
---|---|---|---|
58 | publish | publish channel message,将信息message发送到指定的频道channel | publish ch1 ‘a’ |
59 | subscribe | 订阅给定的一个或多个频道的信息 | subscribe ch1 |
unsubscribe | 取消订阅给定的频道 | unsubscribe ch1 | |
60 | psubscribe | 订阅一个或多个符合给定模式的频道 | psubscribe ch1 ch2 |
punsubscribe | 指示客户端退订所有给定模式 | punsubscribe ch1 ch2 |
测试:开两个控制台,先在一个控制台执行订阅subscribe ch1
另一个控制台在频道上发布内容publish ch1 'hello there'
此时可以看到订阅的控制台上多出了消息的气泡提醒
切换后显示了频道的发布内容
批量订阅: psubscribe ch1 ch2
多个频道发布内容
publish ch1 'hello world'
publish ch2 'hello world2'
订阅的多频道内容查看
8.清除数据
序号 | 命令 | 描述 | 实例 |
---|---|---|---|
61 | flushdb | 清除当前数据库的所有数据 | flushdb |
62 | flushall | 清除redis实例的所有数据 | flushall |