redis数据结构基本语法
Redis Study
学到技巧
快捷键
ctrl + [
typora很好用,有个问题就是换行会自动跟上面的格式,按删除键也无效
ctrl + [就会把前面的格式给稀释掉。
经验
有关typora上传博客园图片缩放的问题,办法就是在typora中粘贴图片以后发现缩放没有效果,然后就是去先点击缩放一下,然后就会出现style字段样式,这里指定的是zoom,我们把它改成width ,height这样的样式就可以起到效果。
the basic grammar of redis
String类型
-
Switching databases(切换数据库)
select 1
- 1
- 2
-
将值移动到其它数据库
将key这个键移动到一号数据库
move key1 1
- 1
-
Clearing the database(清空数据库)
-
flushall
- 1
-
flushdb
- 1
1、flushAll 清空数据库并执行持久化操作,也就是RDB文件会发生改变,变成76个字节大小(初始状态下为76字节),所以执行flushAll之后数据库真正意义上清空了。
2、flushDB 清空数据库,但是不执行持久化操作,也就是说RDB文件不发生改变.而redis的数据是从RDB快照文件中读取加载到内存的,所以在flushDB之后,如果想恢复数据库,则可以直接kill掉redis-server进程,然后重新启动服务,这样redis重新读取RDB文件,数据恢复到flushDB操作之前的状态。
注意:要直接kill 掉redis-server服务,因为shutdown操作会触发持久化。
-
查看端口占用
-
lsof(list open files )
lsof -i : 6379
- 1
lsof -i 需要 root 用户的权限来执行
-
netstat -tunlp | grep 8080
- 1
参数说明如下
-t (tcp) 仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化为数字
-l 仅列出在Listen(监听)的服务状态
-p 显示建立相关链接的程序名
-
-
查看数据库当中所有的键
keys *
- 1
-
查看当前数据库的大小
dbsize
- 1
测试代码段
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> dbsize
(integer) 0
127.0.0.1:6379[1]> set 2 3
OK
127.0.0.1:6379[1]> dbsize
(integer) 1
127.0.0.1:6379[1]> -
一些与键值有关的命令
-
一般赋值
set hello helloword
- 1
-
不存在就赋值
setnx hello helloword
- 1
-
进行批量的赋值
mset key1 value1 key2 value2
- 1
-
原子性的批量赋值
原子性的批量赋值的特点就是这些多个赋值之中,如下,结合不存在这种赋值的话,也就是当这种多个赋值之中,有的已经存在了,那么就不会进行赋值成功,那么另外一个页不会成功,这里类似sql中的事务
msetnx hello helloword hello3 helloword3
- 1
- 2
-
设置对象类型的赋值
set user:1 {name:sail,age:27} set user:2 {name:hello,age:28}
- 1
- 2
获取到对应键的值
get user:1
- 1
-
取值赋值
getset hello "nice to meet you"
- 1
-
获取键对应的长度
strlen hello
- 1
-
获取所有的键
keys *
- 1
-
删除key
del hello
- 1
-
判断键是否存在
exists hello
- 1
-
自增
自增单位1(incr)
先设定一个数字的值
set num 1
- 1
让这个数字的值自增
incr num
- 1
再重新获取到这个值
get num
- 1
自增设置步长(incrby)
incrby num 10
- 1
自减(decr)
decr num1
- 1
-
截取键索引范围字段
getrange hello 0 -1
- 1
-
指定索引位置替换
setrange hello 2 r
- 1
-
设置过期时间
setex hello 60 "hello word"
- 1
-
查看过期时间
ttl hello
- 1
-
List 类型
redis这里这个类型其实可以认为是一个双端队列
所有的list命令都是以l开头
相关的命令
-
从左边插入,相当于从双端对比、列额左边插入到列表的头部可以插入多个值
lpush list one two three
- 1
这样插入的话再从一个方向获取值的话就是按照先进后出的规则
lrange list 0 -1
- 1
-
还可与从右边进行push
rpush list 2 3 4
- 1
获取到值
lrange list 0 -1
- 1
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q6JDIh68-1663585401083)(https://img2022.cnblogs.com/blog/2145006/202209/2145006-20220919185537039-353541965.png)]
这样从右边push进去的话,然后lrange 取得话,就会变成先进先出了。这里可以理解为从右边进的话,其实还是lrange还是从左边取,这样就可以发现符合这样的规律。
-
还可以给元素的前后进行插入赋值
linsert list before 2 1
- 1
linsert list after 4 5
- 1
-
元素指定下标进行赋值
lset list 0 one
- 1
- 2
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rBv4RNFl-1663585401084)(https://img2022.cnblogs.com/blog/2145006/202209/2145006-20220919185606817-2095471764.png)]
-
索引范围取值
lrange list 0 -1
* 获取指定索引的值 ```redis lindex list 0
- 1
- 2
- 3
- 4
- 5
-
获取列表的长度
llen list
![image-20220919185734415](https://img-blog.csdnimg.cn/img_convert/682751a20f79736dcd1d10e4c881614d.png) * 判断列表是否存在 ```redis exists list
- 1
- 2
- 3
- 4
- 5
- 6
- 7
-
移除操作
从左边进行移除
lpop
从右边移除 ```redis rpop
- 1
- 2
- 3
- 4
- 5
-
一次移除多个元素(需要指定元素移除)
这种情况出现在list里面存在重复元素的时候,一次可以指定移除多个这样的元素
lrem list 2 4
![image-20220919185801334](https://img-blog.csdnimg.cn/img_convert/d61b2be3b765c9d879644e453a8e750e.png) * `截取指定索引范围当中的元素(这样的截取其实就是类似于一次lpop掉多个元素) ```redis ltrim list 0 -1
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 移除最后一个元素到新的列表当中
这里其实将列表中头部的元素push到另外的一个列表当中
rpoplpush list list2
- 1
set(无序不重复集合)
-
基本的一些语法
set集合添加元素
sadd set set1 sadd set set2
- 1
- 2
查看集合当中存放的元素
smembers set
- 1
判断集合当中的元素是否存在
存在返回1,不存在返回0
sismember set hello
- 1
计算出集合当中的元素个数
scard set
- 1
查找出集合当中随机的一个元素
srandmember set
- 1
集合运算逻辑
-
1 求两个集合的差集
sdiff set1 set2
- 1
-
2 求两个集合的交集
sinter set1 set2
- 1
-
3 求两个集合的并集
sunion set1 set2
- 1
-
删除元素
srem set1 hello
- 1
-
删除随机元素
spop set1
- 1
-
移动元素
将set1 集合当中的name移动到set集合当中
smove set1 set name
- 1
哈希
提供思维的理解图
哈希赋值
- 单个哈希赋值
hset hash f1 sail
- 1
获取到键对应的值
-
hget hash f1
- 1
-
多个hash赋值
hset hash f1 sail f2 sail1
- 1
-
不存在才赋值
hsetnx hash f4 1
- 1
-
自增
自增1
hincrby hash f3 1
- 1
设置自减的时候只需要将后面的数值设置为负数就可以
-
取值
hget hash f1
- 1
-
取多个键值
hmget hash f1 f2
- 1
-
取到所有的值
hgetall hash
- 1
-
取到所有的键
hkeys hash
- 1
- 2
-
取到所有的值
hvals hash
- 1
-
获取长度
hlen hash
- 1
-
判断字段是否存在
hexists hash f1
- 1
-
删除字段
hdel hash f1
- 1
zset
思维图
zset是set的有序集合,set集合是无序不重复的,zset是有序不重复。
相比set,zset变得有序。
添加一个键的时候会对应一个值,二值对应的会有数字。这些数字其实就是可以作为排序的条件。
- 赋值
zadd set1 1 one 2 two 3 three
- 1
- 2
-
取值(取所有的值)
zrange set1 0 -1
- 1
-
倒序取值
zrevrange set1 0 -1
- 1
- 统计元素到的个数
zcard set1
- 1
- 指定区间查看元素数量
zrange set1 0 -1
- 1
-
进行排序
-
正序排列
zrangebyscore set1 -inf +inf
- 1
-
从负无穷排序到指定的数字
zrangebyscore set1 -inf 2
- 1
-
排序限定结果条数
从负无穷排序到2,然后限定条数是0~2条
zrangebyscore set1 -inf 2 limit 0 2
- 1
- 2
-
排序附带分数
zrangebyscore set1 -inf +inf withscores
- 1
-
倒序
zrevrangebyscore
语法格式一样
…
-
删除元素
-
删除指定的元素
zrem set1 three
- 1
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WRy9bbTd-1663585401096)(C:/Users/jgdabc/AppData/Roaming/Typora/typora-user-images/image-20220919190226560.png)]
-
-
文章来源: daodaozi.blog.csdn.net,作者:兰舟千帆,版权归原作者所有,如需转载,请联系作者。
原文链接:daodaozi.blog.csdn.net/article/details/126939712
- 点赞
- 收藏
- 关注作者
评论(0)