1、字符串类型:string
(1)添加、查询
127.0.0.1:6379> set name zhangsan
OK
127.0.0.1:6379> get name
"zhangsan"
127.0.0.1:6379> set k "hello world"
OK
127.0.0.1:6379> set k hello world
(error) ERR syntax error
127.0.0.1:6379> set k hello,world
OK
127.0.0.1:6379> get k
"hello,world"
注意:插入的数据中如果有空格的数据,需要用“ ”双引号或者改为逗号分隔,因为在Redis中空格就是分隔符,相当于该参数已结束。
(2)追加、获取长度、判断是否存在
127.0.0.1:6379> exists name
(integer) 1
127.0.0.1:6379> exists name1
(integer) 0
127.0.0.1:6379> strlen name
(integer) 8
127.0.0.1:6379> append name ,lisi
(integer) 13
127.0.0.1:6379> get name
"zhangsan,lisi"
注意:追加字符串时,如果key存在,可以再value前加上适合的符号进行拼接。
(3)加、减操作
- 将value数值加一:incr key(返回计算后的值,如果该值不是数值,将报错;如果key不存在,则自动存储新的key,并初始化为0,然后加一)
- 将value数值减一:decr key(用法同上)
- 将value数值加某一具体值:incrby key increment
- 将value数值减某一具体值:decrby key increment
127.0.0.1:6379> get k1
"15"
127.0.0.1:6379> incr k1
(integer) 16
127.0.0.1:6379> decr k1
(integer) 15
127.0.0.1:6379> incrby k1 10
(integer) 25
127.0.0.1:6379> decrby k1 15
(integer) 10
(4)截取、替换操作
127.0.0.1:6379> get name
"zhangsan,lisi"
127.0.0.1:6379> getrange name 0 7
"zhangsan"
127.0.0.1:6379> setrange name 9 hhhh
(integer) 13
127.0.0.1:6379> get name
"zhangsan,hhhh"
(5)设置过期时间、不存在设置
127.0.0.1:6379> setex kk 15 8
OK
127.0.0.1:6379> ttl kk
(integer) 11
127.0.0.1:6379> ttl kk
(integer) 5
127.0.0.1:6379> ttl kk
(integer) -2
127.0.0.1:6379> setnx kk 88
(integer) 1
127.0.0.1:6379> setnx kk 66
(integer) 0
(6)批量(添加新数据、获取数据、添加key不存在的数据)
-
批量添加新的数据:mset key1 value1 key2 value2 key3 value3(中间使用空格隔开)
-
批量获取数据:mget key1 key2 key3 (中间使用空格隔开)
-
批量添加key不存在的数据:msetnx key1 value1 key2 value2 (所有key都不存在设则置成功,返回1;只要有一个存在则设置失败,返回0)
127.0.0.1:6379> mset k1 12 k2 15 k3 18
OK
127.0.0.1:6379> mget k1 k2 k3
1) "12"
2) "15"
3) "18"
127.0.0.1:6379> msetnx k1 5 k4 8
(integer) 0
127.0.0.1:6379> msetnx k4 8 k5 12
(integer) 1
127.0.0.1:6379> mget k1 k2 k3 k4 k5
1) "12"
2) "15"
3) "18"
4) "8"
5) "12"
总结:String是Redis中最常用的一种数据类型,也是Redis中最简单的一种数据类型。可以在缓存、计数器、用户会话、分布式锁等场景进行应用,需要注意的是,Redis 的字符串类型是二进制安全的,可以存储任意数据,不限于文本。但对于大型数据或频繁的字符串操作,需要考虑内存消耗和性能影响。
2、列表类型:list(有序可重复列表)
(1)lpush(左插入)、lrange(查询集合)、rpush(右插入)操作
-
将一个或多个值依次插入列表的表头:lpush key value1 value2 …(若该key已存在,将新值追加在原来的列表中)(l:left)
-
获取列表中指定下标区间的元素:lrange key startIndex endIndex
-
将一个或多个值依次插入列表的表尾:rpush key value1 value2 …(若该key已存在,将新值追加在原来的列表中)(r:right)
#lpush(左插入)
127.0.0.1:6379> lpush list v1
(integer) 1
127.0.0.1:6379> lpush list v2
(integer) 2
127.0.0.1:6379> lpush list v3
(integer) 3
#lrange
127.0.0.1:6379> lrange list 0 -1
1) "v3"
2) "v2"
3) "v1"
127.0.0.1:6379> lpush list1 v1 v2 v3 v4 v5 #批量添加集合元素
(integer) 5
127.0.0.1:6379> lrange list1 0 -1
1) "v5"
2) "v4"
3) "v3"
4) "v2"
5) "v1"
127.0.0.1:6379> lrange list 0 1 #指定查询列表中的元素,从下标零开始,1结束,两个元素
1) "v3"
2) "v2"
127.0.0.1:6379> lrange list 0 0 #指定查询列表中的唯一元素
1) "v3"
#rpush(右插入)
127.0.0.1:6379> rpush list v1
(integer) 4
127.0.0.1:6379> lrange list 0 -1
1) "v3"
2) "v2"
3) "v1"
4) "v1"
(2)lpop(左移除)、rpop(右移除)操作
-
删除指定列表的表头元素并返回:lpop key
-
删除指定列表的表尾元素并返回:rpop key
#lpop
127.0.0.1:6379> lrange list 0 -1
1) "v3"
2) "v2"
3) "v1"
4) "v1"
127.0.0.1:6379> lpop list
"v3"
#rpop
127.0.0.1:6379> lrange list 0 -1
1) "v2"
2) "v1"
3) "v1"
127.0.0.1:6379> rpop list
"v1"
127.0.0.1:6379> lrange list 0 -1
1) "v2"
2) "v1"
(3)lindex(查询指定下标元素)、llen(获取集合长度) 操作
#lindex
127.0.0.1:6379> lrange list 0 -1
1) "v2"
2) "v1"
127.0.0.1:6379> lindex list 1 #获取指定下标位置集合的元素,下标从0开始计数
"v1"
127.0.0.1:6379> lindex list 0
"v2"
#llen
127.0.0.1:6379> llen list #获取指定集合的元素长度
(integer) 2
(4)lrem(根据value移除指定的值)
根据count的值移除列表中的指定的某一些元素:lrem key count value
(count>0:从表头开始数前n个;count<0:从表尾开始数前n个;count=0:移除所有跟value相同的元素)
127.0.0.1:6379> lrange list 0 -1
1) "v3"
2) "v5"
3) "v2"
4) "v3"
5) "v2"
6) "v2"
7) "v1"
8) "v2"
9) "v1"
#count>0
127.0.0.1:6379> lrem list 1 v3
(integer) 1
127.0.0.1:6379> lrange list 0 -1
1) "v5"
2) "v2"
3) "v3"
4) "v2"
5) "v2"
6) "v1"
7) "v2"
8) "v1"
#count<0
127.0.0.1:6379> lrem list -1 v1
(integer) 1
127.0.0.1:6379> lrange list 0 -1
1) "v5"
2) "v2"
3) "v3"
4) "v2"
5) "v2"
6) "v1"
7) "v2"
#count=0
127.0.0.1:6379> lrem list 0 v2
(integer) 4
127.0.0.1:6379> lrange list 0 -1
1) "v5"
2) "v3"
3) "v1"
(5)ltrim(截取元素)、rpoplpush(移除指定集合中最后一个元素到一个新的集合中)操作
#ltrim
127.0.0.1:6379> lpush list v1 v2 v3 v4
(integer) 4
127.0.0.1:6379> lrange list 0 -1
1) "v4"
2) "v3"
3) "v2"
4) "v1"
127.0.0.1:6379> ltrim list 1 2 #通过下标截取指定的长度,这个list已经被改变了,只剩下截取后的元素
OK
127.0.0.1:6379> lrange list 0 -1
1) "v3"
2) "v2"
#rpoplpush
127.0.0.1:6379> lpush list v1 v2 v3 v4 v5
(integer) 5
127.0.0.1:6379> lrange list 0 -1
1) "v5"
2) "v4"
3) "v3"
4) "v2"
5) "v1"
127.0.0.1:6379> rpoplpush list newlist #移除list集合中的最后一个元素到新的集合newlist中,返回值是移除的最后一个元素值
"v1"
127.0.0.1:6379> lrange list 0 -1
1) "v5"
2) "v4"
3) "v3"
4) "v2"
127.0.0.1:6379> lrange newlist 0 -1
1) "v1"
(6)lset(更新)、linsert操作
#lset
127.0.0.1:6379> lrange list 0 -1
1) "v5"
2) "v4"
3) "v3"
4) "v2"
127.0.0.1:6379> lset list 1 newv4 #更新list集合中下标为‘1’的元素为‘newv4’
OK
127.0.0.1:6379> lrange list 0 -1 #查看证明更新成功
1) "v5"
2) "newv4"
3) "v3"
4) "v2"
#注意:
127.0.0.1:6379> lset list1 0 newv1 #如果指定的‘集合’不存在,报错
(error) ERR no such key
127.0.0.1:6379> lset list 6 newv1 #如果集合存在,但是指定的‘下标’不存在,报错
(error) ERR index out of range
#linsert
127.0.0.1:6379> lrange list 0 -1
1) "v5"
2) "newv4"
3) "v3"
4) "v2"
127.0.0.1:6379> linsert list after v3 insertv3 #在集合中‘v3’元素之后加上一个元素
(integer) 5
127.0.0.1:6379> lrange list 0 -1
1) "v5"
2) "newv4"
3) "v3"
4) "insertv3"
5) "v2"
127.0.0.1:6379> linsert list before v3 insertv3 #在集合中‘v3’元素之前加上一个元素
(integer) 6
127.0.0.1:6379> lrange list 0 -1
1) "v5"
2) "newv4"
3) "insertv3"
4) "v3"
5) "insertv3"
6) "v2"
总结:可以应用在消息队列、实时聊天、最新动态、排行榜等场景。
传送门----Redis的五大数据类型(二)