当前位置: 首页 > news >正文

Redis总结

目录

常用命令

启动Redis

查看状态

查看当前数据库key的数目

 切换库

删除当前数据库的数据

退出连接

key操作

查找所有符合条件的key

查看key是否存在

设置key的生存时间

返回key的剩余存在时间 

查看key的数据类型

删除指定的key

string操作

给key设置字符串类型

获取key的字符串值

 对key进行加/减操作

追加内容

返回key的长度

截取字符串

从offset开始用value覆盖key

同时设置多个key-value

同时获取多个key存储的值

list操作

从列表的左边添加元素

查询列表中的全部元素 

从列表的右边添加元素

从左边弹出一个元素并返回

从右边弹出一个元素并返回 

根据指定下标获取元素

获取列表的长度

从左边删除指定个数的元素

set操作

添加元素

查询集合所有元素

判断集合是否存在某个元素

返回集合中元素的个数

 删除集合中指定的元素

随机弹出集合中某个元素

随机弹出指定个数的元素,但不会从集合中删除

取交集

取并集

取补集

zset操作

添加元素

显示集合中的所有值

 取指定区间的元素

 给指定的元素添加分数

 删除指定的元素

 统计指定分数区间元素的个数

查询指定元素的排名

hash操作

向hash中存储数据

获取指定的数据

批量向hash中添加数据

批量获取数据

判断key中是否存在指定的field

获取所有的field

获取所有的value

删除指定的field及其对应的value

对指定的value的值自增/自减

设置指定field的值


常用命令

启动Redis

[root@localhost /]# redis-cli
127.0.0.1:6379> 

查看状态

ping
127.0.0.1:6379> ping
PONG

返回PONG说明服务运行正常

查看当前数据库key的数目

dbsize
127.0.0.1:6379> dbsize
(integer) 1

 切换库

Redis默认使用16个库,索引为0到15

select index
127.0.0.1:6379> select 5
OK
127.0.0.1:6379[5]> dbsize
(integer) 0

删除当前数据库的数据

dbsize
127.0.0.1:6379> dbsize
(integer) 1
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> dbsize
(integer) 0

退出连接

quit
exit

key操作

查找所有符合条件的key

keys pattern

*表示多个字符

?表示单个字符

127.0.0.1:6379> keys *
1) "aw"
2) "a"
3) "kl"
127.0.0.1:6379> keys ?l
1) "kl"

查看key是否存在

exists key

存在返回1

不存在返回0

127.0.0.1:6379> exists a
(integer) 1
127.0.0.1:6379> exists xiaoming
(integer) 0

设置key的生存时间

expire key second

超过时间会自动删除,单位是s

设置成功返回1

不成功返回0

127.0.0.1:6379> expire a 3
(integer) 1
127.0.0.1:6379> keys *
1) "aw"
2) "a"
3) "kl"
127.0.0.1:6379> keys *
1) "aw"
2) "kl"

返回key的剩余存在时间 

ttl key

没有设置生存时间,key永不过期则返回-1

key不存在则返回-2

否则返回剩余存在时间

查看key的数据类型

type key
127.0.0.1:6379> type aw
string

如果key不存在会返回none

127.0.0.1:6379> type lll
none

删除指定的key

127.0.0.1:6379> keys *
1) "aw"
2) "kl"
127.0.0.1:6379> del aw
(integer) 1
127.0.0.1:6379> keys *
1) "kl"

string操作

给key设置字符串类型

set key value
127.0.0.1:6379> set a abcd
OK
127.0.0.1:6379> get a
"abcd"

获取key的字符串值

127.0.0.1:6379> get a
"abcd"

 对key进行加/减操作

如果 key 不存在,则 key 的值先被初始化为 0 再执行incr操作(只能对数字类型的数据操作)

key加1

incr key 
127.0.0.1:6379> set idx 1
OK
127.0.0.1:6379> incr idx
(integer) 2

key减1

decr key
127.0.0.1:6379> decr idx
(integer) 1

key加上指定数

incrby key n
127.0.0.1:6379> set num 1
OK
127.0.0.1:6379> incrby num 5
(integer) 6

key减去指定数

decrby key n
127.0.0.1:6379> decrby num 5
(integer) 1

追加内容

append key value

如果key存在,则将value追加到key末尾

如果key不存在,则将key设置值为value

返回值 追加字符串之后的总长度

127.0.0.1:6379> get aw
"acs"
127.0.0.1:6379> append aw 1234
(integer) 7
127.0.0.1:6379> get aw
"acs1234"

返回key的长度

strlen key

返回key存储的字符串的长度

key不存在则返回0

127.0.0.1:6379> strlen aw
(integer) 7

截取字符串

getrange key start end
127.0.0.1:6379> get aw
"acs1234"
127.0.0.1:6379> getrange aw 1 3
"cs1"

从尾部截取 

127.0.0.1:6379> get aw
"acs1234"

从offset开始用value覆盖key

setrange key offset value
127.0.0.1:6379> get aw
"acs1234"
127.0.0.1:6379> setrange aw 3 78910
(integer) 8
127.0.0.1:6379> get aw
"acs78910"

同时设置多个key-value

127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3
OK

同时获取多个key存储的值

mget key1 [key2] ...
127.0.0.1:6379> mget k1 k2 k3
1) "v1"
2) "v2"
3) "v3"

list操作

从列表的左边添加元素

lpush list value1 [value2...]
127.0.0.1:6379> lpush list a b c
(integer) 3

查询列表中的全部元素 

lrange list 0 -1
127.0.0.1:6379> lrange list 0 -1
1) "c"
2) "b"
3) "a"

从列表的右边添加元素

rpush list value1 [value2...]
127.0.0.1:6379> rpush list d e f
(integer) 6
127.0.0.1:6379> lrange list 0 -1
1) "c"
2) "b"
3) "a"
4) "d"
5) "e"
6) "f"

从左边弹出一个元素并返回

lpop list
127.0.0.1:6379> lpop list
"c"

从右边弹出一个元素并返回 

rpop list
127.0.0.1:6379> rpop list
"f"

根据指定下标获取元素

lindex list 下标
127.0.0.1:6379> lrange list 0 -1
1) "b"
2) "a"
3) "d"
4) "e"
127.0.0.1:6379> lindex list 2
"d"

获取列表的长度

llen list
127.0.0.1:6379> llen list
(integer) 4

从左边删除指定个数的元素

lrem list n value
127.0.0.1:6379> lrange list 0 -1
1) "a"
2) "a"
3) "c"
4) "b"
5) "a"
6) "b"
7) "a"
8) "d"
9) "e"
127.0.0.1:6379> lrem list 3 a
(integer) 3
127.0.0.1:6379> lrange list 0 -1
1) "c"
2) "b"
3) "b"
4) "a"
5) "d"
6) "e"

set操作

添加元素

sadd set value1 [value2]...
127.0.0.1:6379> sadd s1 v1 v2 v3
(integer) 3

查询集合所有元素

smembers set
127.0.0.1:6379> smembers s1
1) "v3"
2) "v1"
3) "v2"

判断集合是否存在某个元素

sismember set value

存在返回1

不存在返回0 

127.0.0.1:6379> sismember s1 v1
(integer) 1
127.0.0.1:6379> sismember s1 v4
(integer) 0

返回集合中元素的个数

scard set
127.0.0.1:6379> scard s1
(integer) 3

 删除集合中指定的元素

srem set value
127.0.0.1:6379> srem s1 v1
(integer) 1
127.0.0.1:6379> scard s1
(integer) 2

随机弹出集合中某个元素

spop set
127.0.0.1:6379> spop s1
"v2"

随机弹出指定个数的元素,但不会从集合中删除

srandmember set n
127.0.0.1:6379> smembers s1
1) "v4"
2) "v2"
3) "v1"
4) "v5"
5) "v6"
6) "v3"
127.0.0.1:6379> srandmember s1 2
1) "v1"
2) "v4"
127.0.0.1:6379> smembers s1
1) "v1"
2) "v5"
3) "v6"
4) "v2"
5) "v3"
6) "v4"

取交集

sinter set1 set2
127.0.0.1:6379> smembers s1
1) "v1"
2) "v5"
3) "v6"
4) "v2"
5) "v3"
6) "v4"
127.0.0.1:6379> smembers s2
1) "a"
2) "v2"
3) "v1"
4) "b"
5) "c"
6) "d"
127.0.0.1:6379> sinter s1 s2
1) "v1"
2) "v2"

取并集

sunion set1 set2
127.0.0.1:6379> sunion s1 s21) "v6"2) "v2"3) "v3"4) "v4"5) "c"6) "v5"7) "a"8) "v1"9) "b"
10) "d"

取补集

sdiff set1 set2
127.0.0.1:6379> sdiff s1 s2
1) "v3"
2) "v4"
3) "v5"
4) "v6"

zset操作

添加元素

zadd zset score1 value1 [score2 value2]...
127.0.0.1:6379> zadd stu 99 aw 88 xh 77 xm
(integer) 3

显示集合中的所有值

按照分数升序排列 

zrange zset 0 -1
127.0.0.1:6379> zrange stu 0 -1
1) "xm"
2) "xh"
3) "aw"

显示集合中值以及其对应的分数 

127.0.0.1:6379> zrange stu 0 -1 withscores
1) "xm"
2) "77"
3) "xh"
4) "88"
5) "aw"
6) "99"

 取指定区间的元素

zrangebyscore zset score1 score2
127.0.0.1:6379> zrangebyscore stu 1 100
1) "xm"
2) "xh"
3) "aw"
127.0.0.1:6379> zrangebyscore stu 1 100 withscores
1) "xm"
2) "77"
3) "xh"
4) "88"
5) "aw"
6) "99"

按照分数降序排列

zrevrangebyscore zset score1 score2
127.0.0.1:6379> zrevrangebyscore stu 100 1
1) "aw"
2) "xh"
3) "xm"

 给指定的元素添加分数

zincrby stu score value
127.0.0.1:6379> zrange stu 0 -1 withscores
1) "xm"
2) "77"
3) "xh"
4) "88"
5) "aw"
6) "99"
7) "kl"
8) "110"
127.0.0.1:6379> zincrby stu 1 aw
"100"

 删除指定的元素

zrem zset value
127.0.0.1:6379> zrem stu xm
(integer) 1
127.0.0.1:6379> zrange stu 0 -1 withscores
1) "xh"
2) "88"
3) "aw"
4) "100"
5) "kl"
6) "110"

 统计指定分数区间元素的个数

zcount zset score1 score2
127.0.0.1:6379> zcount stu 1 100
(integer) 2

查询指定元素的排名

zrank zset 元素
127.0.0.1:6379> zrank stu xh
(integer) 0
127.0.0.1:6379> zrank stu aw
(integer) 1

hash操作

向hash中存储数据

hset key field value
127.0.0.1:6379> hset user id 10001
(integer) 1

获取指定的数据

hget key field
127.0.0.1:6379> hget user id
"10001"

批量向hash中添加数据

hmset key field value field value
127.0.0.1:6379> hmset user name kl age 19
OK

批量获取数据

127.0.0.1:6379> hmget user name age
1) "kl"
2) "19"

判断key中是否存在指定的field

存在返回1

不存在返回0 

127.0.0.1:6379> hexists user name
(integer) 1

获取所有的field

hkeys key
127.0.0.1:6379> hkeys user
1) "id"
2) "name"
3) "age"

获取所有的value

hvals key
127.0.0.1:6379> hvals user
1) "10001"
2) "kl"
3) "19"

删除指定的field及其对应的value

hdel key field
127.0.0.1:6379> hdel user id
(integer) 1
127.0.0.1:6379> hget user id
(nil)

对指定的value的值自增/自减

hincrby key value 1
hincrby key value -1
127.0.0.1:6379> hget user id
"99"
127.0.0.1:6379> hincrby user id 1
(integer) 100
127.0.0.1:6379> hincrby user id -1
(integer) 99

设置指定field的值

hsetnx key field value

如果field存在则不成功,返回0

如果field不存在则成功,返回1

127.0.0.1:6379> hsetnx user time 6:30
(integer) 1
127.0.0.1:6379> hsetnx user time 8:00
(integer) 0

相关文章:

  • 简历上的工作经历怎么写
  • YOLOv8改进 | 2023 | 通过RFAConv重塑空间注意力(深度学习的前沿突破)
  • 解决Linux Visual Studio Code显示字体有问题/Liunx下Visual Studio Code更换字体
  • 【brpc学习实践十一】session-local与thread-local应用与brpc抽象工厂模式实践
  • Linux设置Nginx开机自启
  • 【Openstack Train安装】九、Nova安装
  • 【微服务】java 规则引擎使用详解
  • 《Effective C++》条款27
  • python 生成器的作用
  • sql手工注入漏洞测试(MYSQL)-墨者-url信息
  • express+mySql实现用户注册、登录和身份认证
  • WEB渗透—反序列化(九)
  • golang 集成logrus日志框架
  • 基于SpringBoot的旅游网站的设计与实现
  • Could not resolve all files for configuration ‘:app:androidJdkImage‘.
  • Angular数据绑定机制
  • HomeBrew常规使用教程
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • JavaScript新鲜事·第5期
  • JAVA并发编程--1.基础概念
  • Linux下的乱码问题
  • Twitter赢在开放,三年创造奇迹
  • Vue.js-Day01
  • windows-nginx-https-本地配置
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 回顾 Swift 多平台移植进度 #2
  • 面试遇到的一些题
  • 强力优化Rancher k8s中国区的使用体验
  • 小程序01:wepy框架整合iview webapp UI
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • 关于Android全面屏虚拟导航栏的适配总结
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • #Java第九次作业--输入输出流和文件操作
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (vue)页面文件上传获取:action地址
  • (六)Hibernate的二级缓存
  • (十六)Flask之蓝图
  • (算法设计与分析)第一章算法概述-习题
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (转)memcache、redis缓存
  • (状压dp)uva 10817 Headmaster's Headache
  • .bat批处理出现中文乱码的情况
  • .net 提取注释生成API文档 帮助文档
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .net2005怎么读string形的xml,不是xml文件。
  • .NET微信公众号开发-2.0创建自定义菜单
  • @property @synthesize @dynamic 及相关属性作用探究
  • @vue/cli脚手架
  • [20170713] 无法访问SQL Server
  • [AIGC] MySQL存储引擎详解
  • [Asp.net MVC]Bundle合并,压缩js、css文件
  • [BZOJ1008][HNOI2008]越狱