Redis五种数据类型详解其一(*^▽^*)

Redis五种数据类型详解

一、string数据类型

概述: String是redis 最基本的类型,最大能存储512MB的数据,String类型是二进制安全的,即可以存储任何数据、比如数字、图片、序列化对象等。

1、SET/GET/APPEND/STRLEN

PS:append:
append key value — 追加键值,并返回追加后的长度;若键不存在,则创建。类似Linux的> >>
exist home — 判断该键是否存在,存在返回1,否则返回0
append home “cat” — 该键不存在,因此append命令返回当前value的长度
append home “cat” — 该键存在,因此返回追加后value的长度
get home — 通过get命令获取该键,以判断append的结果
实例:

redis-cli
redis 192.168.65.129:6379 > exists mykey    判断该键是否存在
(integer) 0
redis 192.168.65.129:6379 > append mykey "hello"  因为该键不存在,因此append命令返回当前value的长度
(integer) 5
redis 192.168.65.129:6379 > append mykey " world" 该键存在,因此返回追加后value的长度
(integer) 11
redis 192.168.65.129:6379 > get mykey  通过get命令获取该键,以判断append的结果
"hello world"
redis 192.168.65.129:6379 > set mykey "lrz is very good" 通过set命令获取新值,并覆盖原有值
OK
redis 192.168.65.129:6379 > get mykey 
"lrz is very good"
redis 192.168.65.129:6379 > strlen mykey  获取指定key的字符长度
(integer) 16

在这里插入图片描述

2、INCR/ DECR/ I NCRBY/ DECRBY

基本格式:
INCR key: key值递增指定的整数
DECR1key: key值递减指定的整数
incrby key increment ##键增加指定的整数
decrby key decrement ##键减少指定的整数

实例:

127.0.0.1:6379> get liu		##获取liu键的值
"23"
127.0.0.1:6379> incr liu	##liu键值加1
(integer) 24
127.0.0.1:6379> incr liu		##liu键值加1
(integer) 25
127.0.0.1:6379> decr liu		##liu键值减1
(integer) 24
127.0.0.1:6379> decr liu		##liu键值减1
(integer) 23
127.0.0.1:6379> get liu
"23"
针对不存在的键自增和自减法的基数是0
incr rui		##对于rui键自增1
decr rui		##对于rui键自减1

在这里插入图片描述
在这里插入图片描述
PS:
无法对非整数进行自增自减:
在这里插入图片描述
同理,字符串也是一样。切记切记!!!!!

127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set liu 1		##修改键值为1
OK
127.0.0.1:6379> get liu 
"1"
127.0.0.1:6379> incrby liu 4		##kl键增加4
(integer) 5
127.0.0.1:6379> get liu
"5"
127.0.0.1:6379> decrby liu 4		##kl键减少4
(integer) 1
127.0.0.1:6379> get liu
"1"

在这里插入图片描述
在这里插入图片描述

3、GETSET

基本格式:
getset key value ##获取key值并返回,同时给key设置新值;即:先获取key值并返回key值,再次get key会获取设置的新值

127.0.0.1:6379> keys *
1) "liu"
127.0.0.1:6379> get liu
"1"
127.0.0.1:6379> getset liu 0		##先获取kl的值为1,再返回值
"1"
127.0.0.1:6379> get liu		##get获取的是新值
"0"

实例:
在这里插入图片描述

4、SETEX

基本格式:
setex key seconds value:设置指定key的过期时间为seconds;ex:最大
ttl key ##查看指定Key的剩余存活时间(秒数);-2表示已经过期,-1代表最大值,表示永不过期
实例:

127.0.0.1:6379> setex  lrz 10 haha		##设定zyt键值haha过期时间为10s
OK
127.0.0.1:6379> get lrz
"haha"
127.0.0.1:6379> ttl lrz		##查询zyt键剩余存活时间为5s
(integer) 5
127.0.0.1:6379> ttl lrz		##查询zyt键剩余存活时间为3s
(integer) 3
127.0.0.1:6379> ttl lrz		##ttl值为-2时为值失效
(integer) -2
127.0.0.1:6379> get lrz
(nil)
127.0.0.1:6379> set liu 1
OK
127.0.0.1:6379> get liu		##未设置过期时间的显示值为-1
"1"
127.0.0.1:6379> ttl liu
(integer) -1

在这里插入图片描述
在这里插入图片描述

5、SETNX

基本格式:
setnx key value: 不存在键的话执行set操作返回值1,存在的话不执行修改,返回值0
实例:

127.0.0.1:6379> setnx liu 2		##修改liu键值为2,不存在则修改返回值1
(integer) 1
127.0.0.1:6379> get liu
"2"
127.0.0.1:6379> setnx liu 3		##修改liu键值为3,此时liu键已存在则不执行修改,返回值0
(integer) 0
127.0.0.1:6379> get liu		##获取liu键值仍为2
"2"

在这里插入图片描述

6、 MSET/MGET/MSETNX

基本格式:
mset key value [key value …] ##批量设置键值对;m:批量
mget key [key …] ##批量获取键值对
msetnx key value [key value …] ##批量设置键值对,键都不存在就执行并返回1;只要有一个键存在就不执行并返回0
实例:

127.0.0.1:6379> mset kl 2 kl1 3 kl2 4		##批量创建键值kl、kl1、kl2
OK
127.0.0.1:6379> mget kl kl1 kl2		##批量查询键值kl、kl1、kl2
1) "2"
2) "3"
3) "4"
127.0.0.1:6379> msetnx kl 5 qq 1 ww 2		##批量设置了kl、qq、ww键值,因为kl键已存在,所以msetnx命令执行不成功返回1
(integer) 0
127.0.0.1:6379> mget kl qq www		##因为msetnx命令执行不成功,所以qq和ww键未设置成功,返回nil
1) "2"
2) (nil)
3) (nil)
127.0.0.1:6379> msetnx aa 2 bb 3		##批量设置了aa和bb键值,因为之前并不存在,所以msetnx命令执行成功返回1
(integer) 1
127.0.0.1:6379> mget aa bb		 ##成功获取aa和bb键的值
1) "2"
2) "3"

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、List数据类型

概述:列表的元素类型为string,按照插入顺序排序,在列表的头部或尾部添加元素。

1、LPUSH/LPUSHX/LRANGE

基本格式
lpush key value [value …] ##在头部(左侧)依次插入列表元素;l:left
lpushx key value ##键必须存在才能执行,在头部插入元素值并返回列表元素数量;l:left;0:代表索引下标,第一个元素;-1:最大值,最后一个元素
lrange key start stop ##取从位置索引start到位置索引stop的所有元素( 索引以0开始);L:list
实例:

127.0.0.1:6379> lpush kl 1 2 3 4 5 6 7		##在kl键的值1的位置左侧插入234567
(integer) 7
127.0.0.1:6379> lrange kl 0 -1		##查询整个列表;0:第一个元素;-1:最后一个元素
1) "7"
2) "6"
3) "5"
4) "4"
5) "3"
6) "2"
7) "1"
127.0.0.1:6379> lrange kl 0 1000		##仅显示有的元素
1) "7"
2) "6"
3) "5"
4) "4"
5) "3"
6) "2"
7) "1"
127.0.0.1:6379> get kl		##使用get是无法查询的,需要使用lrange
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379> lpushx kl2 8		##在kl2键插入元素8,因为键不存在,返回
(integer) 0
127.0.0.1:6379> lrange kl2 0 -1
(empty list or set)
127.0.0.1:6379> lpushx kl 8		##在左侧插入元素8,返回元素的数量
(integer) 8
127.0.0.1:6379> lrange kl 0 -1
1) "8"
2) "7"
3) "6"
4) "5"
5) "4"
6) "3"
7) "2"
8) "1"

在这里插入图片描述
在这里插入图片描述

2、LPOP/LLEN

基本格式:
lpop key ##移除并返回键的第一个元素,即从右往左第一个
llen key ##获取表中元素数量
实例:

192.168.65.129:6379> lrange kl 0 -1		##查询所有元素
1) "8"
2) "7"
3) "6"
4) "5"
5) "4"
6) "3"
7) "2"
8) "1"
192.168.65.129:6379> lpop kl		##移除并返回键的第一个元素
"8"
192.168.65.129:6379> lrange kl 0 -1		##查询所有元素,发现元素4已被移除
1) "7"
2) "6"
3) "5"
4) "4"
5) "3"
6) "2"
7) "1"
192.168.65.129:6379> llen kl		##在执行lpop命令一次后,链表头部的两个元素已经被移除,此时链表中元素的数量是3
(integer) 7

在这里插入图片描述

3、LREM/LSET/LINDEX/LTRIM

基本格式:
lrem key count value ##从列表头部开始删除count个值为value的元素,并返回实际删除数量
实例:

192.168.65.129:6379> lpush kl 1 2 3 4 1 2 3
(integer) 14
192.168.65.129:6379> lrange kl 0 -1
 1) "3"
 2) "2"
 3) "1"
 4) "4"
 5) "3"
 6) "2"
 7) "1"
 8) "7"
 9) "6"
10) "5"
11) "4"
12) "3"
13) "2"
14) "1"
192.168.65.129:6379> lrem kl 2 2		##删除kl键2个2
(integer) 2
192.168.65.129:6379> lrange kl 0 -1
 1) "3"
 2) "1"
 3) "4"
 4) "3"
 5) "1"
 6) "7"
 7) "6"
 8) "5"
 9) "4"
10) "3"
11) "2"
12) "1"
192.168.65.129:6379> lrem kl 3 1		##删除kl键3个1,返回告知只有2个1并且删除
(integer) 3
192.168.65.129:6379> lrange kl 0 -1
1) "3"
2) "4"
3) "3"
4) "7"
5) "6"
6) "5"
7) "4"
8) "3"
9) "2"

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
lset key index value ##将位置索引为index的元素设置新值value
lindex key index ##获取索引为index的元素
ltrim key start stop ##仅保留从位置索引start到索引stop的元素
实例:

192.168.65.129:6379> lset kl 2 a		##将索引2位置替换成a
OK
192.168.65.129:6379> lrange kl 0 -1	##索引从0开始,所以替换的是第三行
1) "3"
2) "4"
3) "a"
4) "7"
5) "6"
6) "5"
7) "4"
8) "3"
9) "2"
192.168.65.129:6379> lindex kl 2		##获取索引为2的元素
"a"	
192.168.65.129:6379> ltrim kl 0 1		##仅保留索引值0-1中间的元素
OK
192.168.65.129:6379> lrange kl 0 -1	##查询所有的元素只剩下索引0-1,三行
1) "3"
2) "4"

在这里插入图片描述

4、LINSERT

基本格式:
LINSERT key BEFORE|AFTER pivot value: 在元素pivot的前面(做左)或后面(右)插入新元素value
实例:

127.0.0.1:6379> lpush kl 1 2 3 4 5 6		##新键kl
(integer) 6
127.0.0.1:6379> linsert kl before 1 a		##在元素1前面插入a
(integer) 7
127.0.0.1:6379> lrange kl 0 -1		##从结果看已经插入成功
1) "6"
2) "5"
3) "4"
4) "3"
5) "2"
6) "a"
7) "1"
127.0.0.1:6379> lset kl 1 4		##修改索引1位置改为4
OK
127.0.0.1:6379> lrange kl 0 -1		##查询已经修改成功
1) "6"
2) "4"
3) "4"
4) "3"
5) "2"
6) "a"
7) "1"
127.0.0.1:6379> linsert kl after 4 b	 ##在元素4后面插入元素b
(integer) 8
127.0.0.1:6379> lrange kl 0 -1	##查询是在第一个4后面插入
1) "6"
2) "4"
3) "b"
4) "4"
5) "3"
6) "2"
7) "a"
127.0.0.1:6379>  linsert kl after 8 q	##在元素8后面插入q;元素8并不存在,linsert命令操作失败,返回-1
(integer) -1
127.0.0.1:6379> linsert kl2 after 8 q		##为不存在的键插入新元素,linsert命令操作失败,返回0
(integer) 0

5、BPUSH/RPUSHX/RPOP/RPOPLPUSH

基本格式:
rpush key value [value …] ##在列表的尾部依次插入value;l:list
rpushx key value ##key必须存在才可执行,将value从尾部插入,并返回所有元素数量
rpop key ##在尾部弹出(移除)一个元素,并返回该元素
rpoplpush source destination ##在key1的尾部弹出一个元素并返回,将它插入key2的头部
实例:

127.0.0.1:6379> rpush kl 1 2 3 4 5
(integer) 5
127.0.0.1:6379> lrange kl 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> rpushx kl a		##kl键尾部插入a,并返回元素数量
(integer) 6
127.0.0.1:6379> lrange kl 0 -1		##查询插入成功
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "a"
127.0.0.1:6379> rpop kl		##移除并返回kl键的第一个元素,从右取
"a"
127.0.0.1:6379> lrange kl 0 -1	##查询最右的元素a已被移除
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> rpoplpush kl kl2		##将kl键的尾部元素弹出插入到kl2键的首部
"4"
127.0.0.1:6379> lrange kl 0 -1		##查询显示kl键尾部元素4已被弹出
1) "5"
2) "1"
3) "2"
4) "3"
127.0.0.1:6379> lrange kl2 0 -1		##查询显示kl2键首部元素4已被插入
1) "4"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值