Redis五大基本数据类型介绍及其基本使用

Redis五大数据类型

Redis-Key基本命令

set key name -- 设置一个基本的键值对
keys * -- 查看所有的键
exists key -- 查看对应的key是否存在
move key 对应数据库的编号 -- 将这个key对应的数据移动到别的数据库
expire key 过期时间(单位秒) -- 设置这个数据多久之后过期
ttl key -- 查看该数据还有多久过期
			-- 这里-1 表示是没有过期时间
			-- -2表示是已经过期了
type key -- 查看当前的key对应的数据是什么类型

String - 字符串

  • 这个就是字符串类型了
  • 一般我们使用set命令添加的key和name都是字符串类型的

字符串相关命令

  1. 拼接字符串
append key 要添加的字符串
  • 如果当前的字符串不存在就会自动创建对应的键值对

image-20210920142846347

  1. 获取字符串长度
strlen key

通过key来获取字符串长度

  1. i++操作
  • 就是一个自动帮我们给计数器加1的操作
incr key

image-20210920143707964

  • 想一些基本的网站的浏览量呀,播放量之类的可以用redis来实现
decr key
  • 这个就是对应的i–操作了
incrby key 数值
  • 这个就是增加对应的数值了
decrby key 数值
  • 减操作

image-20210920144043187

  1. 获取字符串范围操作
getrange key 起始 结束

image-20210920145735428

  1. 字符串替换操作
setrange key 要开始替换的字符串下标 替换完成的字符

image-20210920150056692

  1. 关于过期时间的操作
setex key 过期时间 value
  • 这个就是设定对应的过期时间

image-20210920151649851

setnx key values
  • 这个是在没有对应的key的时候才设置value

  • 注意这个指令在分布式的锁中会经常使用
  1. 批量设置键值对
mset key1 value1 key2 value2 ...
	-- 注意这里也是可以使用msetnx的,就只有值不存在才创建
	-- 而且这个是原子性操作,就是只有所有的值都能创建才能成功
	-- 只要有一个没有成功创建就会失败

image-20210920152252797

mget k1 k2 k3
  • 这个就是批量获取了
  1. 创建一个对象
set user:1 {name:wan,age:18}
  • 一般都是这样设置为一个json字符串来保存对象
set user:1:name wan
set user:1:age 18
  • 不过更多推荐这样来设计
  • 这里就是 对象名 : 编号 : 字段
  1. 先查看后设置命令
getset key value
  • 这个就是先去查看这个key对应的值
  • 然后将对应的值变为你新设置的value

List - 列表

  • 先记住所有的list命令都是使用 l 开头的
  1. 创建一个List集合
lpush 集合名 值
  • 要添加值继续使用这个指令即可

image-20210920154226627

  1. 获取全部的值
lrange 集合名 0 -1

image-20210920154233576

image-20210920154313352

  • 注意这里的获取顺序是反着来的
  1. 添加数据到开头
rpush 集合名 值

image-20210920154553576

  • 要理解的话就是r和l分别对应右左
  1. 获取值
r/lpop key
  • 就选择从左右方向去获取值

image-20210920154943403

lindex list 下标
  • 这个就是获取对应下标的值而已

image-20210920155020474

  1. 获取list集合的长度
llen list

image-20210920155157669

  1. 移除指定的值
lrem 集合名称 要移除的数量 对应的value

image-20210920155515875

ltrim 集合名称 要保留的范围

image-20210920162454443

rpoplpush 集合1 集合2
  • 这个就是将集合1最右边的元素添加到集合2最左边

image-20210920162945899

  1. 一些插入操作
exists 集合名

lset 集合名 对应位置 要修改的元素名
	-- 这个就是如果对应的位置不存在就会报错,存在就会修改为现在的值

image-20210920163321662

linsert 集合名 before 对应的值 要添加的值
	-- 这个就是在对应的值前面添加要添加的值
	-- 如果换成after就是在对应的值后面去添加值

image-20210920163653131

image-20210920163741475

Set - 集合

  • 这种集合的属性和java里面的是一样的,就是值不能重复
  • 还是先记住所有的set命令都是以s开头的
  1. 创建一个set集合
sadd 集合名 值名称

image-20210920165000888

  1. 查看集合元素
smembers 集合名
  1. 判断某个值是否存在
sismember 集合名 对应值名	

image-20210920165152051

  1. 查看现在集合有多少元素
scard 集合名称

image-20210920165337425

  1. 移除某个元素
srem 集合名 元素名

image-20210920165522366

  1. 随机获取元素
srandmember 集合名

image-20210920165730204

spop 集合名 
	-- 这个比较离谱,随机删除集合中的元素
  1. 移动元素到另外的集合中
smove 集合1 集合2 元素
	-- 这个就是将集合1中的元素移动到集合2中

image-20210920170300805

  1. 一些数学上的操作
  • 这个就有一些数学上的操作了
  • 比如交并集,差集等等
sdiff 集合1 集合2
	-- 这个就是求集合1对比集合2中没有的元素

image-20210920170921970

sinter 集合1 集合2
	-- 这个就是求并集了

image-20210920171052331

sunion 集合1 集合2
	-- 这个就是求集合1和集合2的并集了

image-20210920171151916

  • 这里也侧面验证了在set中的元素顺序是混乱的

用处

可以用来做共同关注功能

直接用set的并集就出来了

Hash - 哈希

  • 这个可以当作map集合来看
  • 就是里面存放的是 key - map这样的
  • 通过key可以再提取出一个map
  • 也就是键值对存放的是一个集合

  • 记得所有的hash命令都是以h开头的
  1. 创建一个hash集合
hset 集合名 key value

image-20210920181635906

  • 这里一样是可以使用mget和mset的

image-20210920181711701

  1. 获取值
hgetall hash集合名

image-20210920182520793

  1. 删除
hdel hash集合名 key名
  • 这个就是删除指定的key和对应的value了

image-20210920182640537

  1. 获取长度
hlen 集合名称

image-20210920182903161

hkeys myhash
	-- 这个就是获取hash的所有key

image-20210920183106312

  1. 其他操作
  • 还记得之前那些操作吗?
  • 就是String里面的增加和减少
  • hash里面也有
hincrby hash集合名 key名 增加的数值

image-20210920183238881

  • 就连setnx也是存在的
hsetnx hash集合名 key名 values名

用处

这个就是对比前面的使用 对象名 : id : 字段名 这种方式好很多了

Zset - 有序集合

  • 这个就是对比set多了个排序而已
  • 才怪,妈耶还多了很多东西的好吧
  1. 创建一个zset集合
zadd 集合名 key value

其实就和之前的set是一样的

image-20210920201024128

  1. 排序的实现
zrangebyscore 要排序的集合名 -inf +inf

后面的 -inf和+inf是代表从负无穷到正无穷的意思

image-20210920201310958

image-20210920201701375

  • 这里的范围其实也可以具体指定
  • 如果我把这个+inf修改为2000,这个lin就不会显示出来了

image-20210920202145908

zrevrange zset名称 0 -1
  • 这个就是从大到小排序了

image-20210920204719903

  • 具体可以查下 zrangebyscore指令
  1. 删除对应集合中的元素
zrem 集合名称 对应的value的值

image-20210920203742277

  1. 获得对应库中有多少数据
zcard zset名称

image-20210920204452443

zcount zset名称 开始 结束
	-- 这个就是表示从开始到结束范围内容有多少条数据

image-20210920205526385

用处

可以存储班级成绩,工资之类

还可以设置数据的权重,就比如 1 代表最重要, 2 次之

还有排行榜之类的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值