1、redis场景数据类型
1.1、字符串(string):
字符串是所有编程语言中最常见的科最常用的数据类型,而且也是redis最基本的数据类型之一,而且redis中所有的key的类型都是字符串。
1.1.1、set 设置key值
# 设置一个key为name,value为“zhangsan”,设置自动过期时间为10s,10s后过期,单位是秒
127.0.0.1:6379[1]> set name zhangsan ex 10
OK
127.0.0.1:6379[1]> keys *
1) "name"
# 10s后查看,发现key已经不存在了
127.0.0.1:6379[1]> keys *
(empty list or set)
过期时间场景:例如公司搞活动,在APP中的优惠券,满多少元减多少钱,过期时间是3天。
1.1.2、get 查询key值
# 设置key值
127.0.0.1:6379[1]> set hongbao 300 ex 3600
OK
# 查询红包的value值
127.0.0.1:6379[1]> get hongbao
"300"
127.0.0.1:6379[1]>
设置几个测试值
127.0.0.1:6379[1]> set key1 1
OK
127.0.0.1:6379[1]> set key2 2
OK
127.0.0.1:6379[1]> set name zhangsan
OK
127.0.0.1:6379[1]> keys *
1) "name"
2) "hongbao"
3) "key2"
4) "key1"
注意: 生产环境不建议使用keys *查数key的名称,因为可以能key的数量太多,查询的时候特别耗性能(内存和IO等),容易导致不确定的问题出现。
1.1.3、del删除key
# 删除key红包,注意删除成功一个,(integer) 就是1,删除多个就会显示多个的数值,如果删除的数据没有就显示0
127.0.0.1:6379[1]> del hongbao
(integer) 1
# 删除多个key
127.0.0.1:6379[1]> del key1 key2
(integer) 2
127.0.0.1:6379[1]> keys *
1) "name"
# 删除不存在的key
127.0.0.1:6379[1]> del age
(integer) 0
1.1.4、mset 一次性设置多个key
# 通过mset设置多个key
127.0.0.1:6379[1]> mset name zhangsan age 20
OK
127.0.0.1:6379[1]> get name
"zhangsan"
127.0.0.1:6379[1]> get age
"20"
1.1.5、mget获取多个key的value值
# 通过mget获取多个value值
127.0.0.1:6379[1]> mget name age
1) "zhangsan"
2) "20"
1.1.6、append追加key值
# 查看name值
127.0.0.1:6379[1]> get name
"zhangsan"
# 在name值后边追加12,这边(integer) 中为什么是10,因为追加完总共是10个字符串
127.0.0.1:6379[1]> append name 12
(integer) 10
# 查看追加之后的key值
127.0.0.1:6379[1]> get name
"zhangsan12"
# 全部修改name的值
127.0.0.1:6379[1]> set name lisi
OK
127.0.0.1:6379[1]> get name
"lisi"
1.1.7、incr 递增
场景:例如你在微信朋友圈发了一条说说,有几个朋友给你点赞,这个点赞数(在不去取消点赞的情况下)就是递增
# 设置一个num值
127.0.0.1:6379[1]> set num 0
OK
127.0.0.1:6379[1]> get num
"0"
# 递增,第一次点赞
127.0.0.1:6379[1]> incr num
(integer) 1
127.0.0.1:6379[1]> get num
"1"
# 第二次点赞
127.0.0.1:6379[1]> incr num
(integer) 2
127.0.0.1:6379[1]> get num
"2"
1.1.8、decr 递减
场景:如果有朋友发现点错了赞,或者不想给你点赞了,就取消了点赞
# 当前点赞数是2
127.0.0.1:6379[1]> get num
"2"
# 一位朋友取消了点赞
127.0.0.1:6379[1]> decr num
(integer) 1
127.0.0.1:6379[1]> get num
"1"
1.1.9、strlen 查看value值的长度
# 设置一个key
127.0.0.1:6379[1]> set name zhangsan
OK
# 查看key的长度
127.0.0.1:6379[1]> strlen name
(integer) 8
注意: strlen只能查看string类型的长度,llen查看list类型的长度,这个后边会介绍!
1.1.10、exists 判断key是否存在
# 判断name是否存在,存在返回1,不存在返回0,判断多个的话有几个就返回几
127.0.0.1:6379[1]> keys *
1) "name"
2) "num"
3) "age"
127.0.0.1:6379[1]> exists name
(integer) 1
127.0.0.1:6379[1]> exists key1
(integer) 0
127.0.0.1:6379[1]> EXISTS name sex age # 由于sex不存在,name和age存在,所以只返回2
(integer) 2
exists同样可以判断list是否存在!
1.1.11、ttl 查看过期时间
-1:是永不过期
-2:不存在的key
单位:秒
# 设置一个红包,值是200,过期时间是一天(86400秒)
127.0.0.1:6379[1]> set hongbao 200 ex 86400
OK
127.0.0.1:6379[1]> ttl hongbao
(integer) 86394
127.0.0.1:6379[1]> ttl hongbao
(integer) 86393
注意: 如果设置过key之后相对value值进行调整,例如把200调整成300,此时修改完之后key值是不会继承有效时间的,时间会变成永不过期!一定要注意!!!
127.0.0.1:6379[1]> set hongbao 300
OK
127.0.0.1:6379[1]> ttl hongbao
(integer) -1
使用append对value值进行追加 不会影响过期时间,注意追加后值会从三位变成4位,一定要注意不是加1
127.0.0.1:6379[1]> append hongbao 1
(integer) 4
127.0.0.1:6379[1]> ttl hongbao
(integer) 86363
127.0.0.1:6379[1]> get hongbao
"3001"
1.1.12、type 查看key的类型
127.0.0.1:6379[1]> type name
string
1.2、列表:
列表是一个双向可读写的管道,其头部是左侧尾部是右侧,一个列表最多可以包含2^32-1个元素即4294967295个元素
1.2.1、lpush 从左侧插入数据
# 从左侧插入数据
127.0.0.1:6379[1]> lpush list2 zhangsan lisi wangwu
(integer) 3
1.2.2、rpush 从右侧插入数据
# 从右侧插入数据
127.0.0.1:6379[1]> rpush list2 zhaoliu
(integer) 4
注意: lpush是从左往右增加数据,rpush是从右往左增加数据,尽量按照一个方向增加数据!一般是从左写入数据,从右取出数据,数据是先进先出!
1.2.3、rpop 从右侧取数据
# 从右取出第一个数据是zhaoliu,第二个数据是zhangsan
127.0.0.1:6379[1]> rpop list2
"zhaoliu"
127.0.0.1:6379[1]> rpop list2
"zhangsan"
127.0.0.1:6379[1]> rpop list2
"lisi"
127.0.0.1:6379[1]> rpop list2
"wangwu"
注意: 数据一旦取出就不在有了
1.2.4、lpop 从左侧取数据
127.0.0.1:6379[1]> lpush list2 zhangsan lisi wangwu
(integer) 3
127.0.0.1:6379[1]> lpop list2
"wangwu"
1.2.5、llen 查看列表的长度
127.0.0.1:6379[1]> llen list1
(integer) 3
这里边的3是列表里边的数据的个数
说明: 笔记是参考马哥视频整理出来的,如有侵权请联系删除!