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

Redis 常用数据类型和命令使用

目录

1 string    

2 hash

3 list

4 set集合

5 zset有序集合


1 string    


值可以是字符串、数字和二进制的value,值最大不能超过512MB

应用场景:
应用程序缓存
计数器
web共享session
限速


1.1 设置单个键值
set <key> value [EX seconds|PX milliseconds] [nx|xx]
ex seconds 为键值设置秒级过期时间
px milliseconds 为键值设置毫秒级过期时间
nx 键必须补存在,才可以设置成功,用于添加
xx 与nx相反,键必须存在,才可以设置成功,用于更新

示例:
设置key1值为value1,过期时间60秒,键存在才更新
127.0.0.1:6379>set key1 value1 ex 60  xx 


1.2 获取值
get key

示例:
127.0.0.1:6379> get key1
"value1"


1.3 计数
incr key,
值为整数返回自增后的结果
值不是整数返回错误
键不存在按照值为0自增返回结果1
其他命令:decr(自减),incrby(自增指定数字),decrby(自减指定数字)

示例:
127.0.0.1:6379> set counter 1
OK
127.0.0.1:6379> get counter
"1"

127.0.0.1:6379> incr counter
(integer) 2
127.0.0.1:6379> get counter
"2"

127.0.0.1:6379> decr counter
(integer) 1
127.0.0.1:6379> get counter
"1"

127.0.0.1:6379> incrby counter 10
(integer) 11
127.0.0.1:6379> get counter
"11"

127.0.0.1:6379> decrby counter 3
(integer) 8
127.0.0.1:6379> get counter
"8"

1.4 追加值
append <key> value    #追加到原值的末尾

实例:
127.0.0.1:6379> get key2
"value2"
127.0.0.1:6379> append key2 "-key2"
(integer) 11
127.0.0.1:6379> get key2
"value2-key2"


1.5字符串长度
strlen <key> #获取值的长度

实例:
127.0.0.1:6379> strlen key2
(integer) 11

1.6 获取部分字符串
getrange <key> start end

实例:
127.0.0.1:6379> getrange key2 1 2
"al"

1.7 删除key
del <key>

实例:
127.0.0.1:6379> del key1
(integer) 1

1.8 批量设置值
mset <key> value [key value ...]

实例:
127.0.0.1:6379> mset a 1 b 2 c 3 d 4 e 5
OK

1.9 批量获取
mget <kye> [key ...]

实例:
127.0.0.1:6379> mget a b c d e
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"

2 hash


是一个键值对集合

应用场景:
缓存对象,一个key里有多个字段,比如缓存用户登录信息。

2.1 设置值
hset <key> field value     #单个值
hmget <key> field [field ...]

实例:
127.0.0.1:6379> hset myhash name zyb
(integer) 1
127.0.0.1:6379> hmset myhash age 10 address gz
OK

2.2 查询
hget <key> field       #获取单个field的值
hmget <key> field [field ..]  #获取多个field的值

实例:
127.0.0.1:6379> hget myhash name
"zyb"
127.0.0.1:6379> hmget myhash age address
1) "10"
2) "gz"


hkeys <key>   #获取所有field

实例:
127.0.0.1:6379> hkeys myhash
1) "name"
2) "age"
3) "address"


hvals <key>   #获取所有value

实例:
127.0.0.1:6379> hvals myhash
1) "zyb"
2) "10"
3) "gz"

hgetall <key>  #获取所有的field-value

实例:
127.0.0.1:6379> hgetall myhash
1) "name"
2) "zyb"
3) "age"
4) "10"
5) "address"
6) "gz"


hlen <key> #计算field个数

实例:
127.0.0.1:6379> hlen myhash
(integer) 3


hexists <key> field  #判断field是否存在

实例:
127.0.0.1:6379> hexists myhash name
(integer) 1  
返回1表示该field存在

hstrlen <key> field   #计算value的字符串长度

实例:
127.0.0.1:6379> hstrlen myhash name
(integer) 3


2.3 删除field
hdel <key> field [field ...]

实例:
127.0.0.1:6379> hdel myhash address
(integer) 1
127.0.0.1:6379> hgetall myhash
1) "name"
2) "zyb"
3) "age"
4) "10"


3 list


列表类型是用来存储多个有序字符串

应用场景:
消息队列: lpush+rpop=消息队列,生产和消费
文章列表
栈: lpush+lpop=stack
lpush+ltrim =Capped collection 有限集合

3.1 添加
#从左/右边插入元素
lpush <key> value [value ...]

实例:
127.0.0.1:6379> lpush mylist a b c d e f 
(integer) 6

#向某个元素前或后插入元素
linesert <key> before|after pivot value

示例: 在a元素之后插入aaa
127.0.0.1:6379> LINSERT mylist before a aaa
(integer) 7

#rpoplpush 移除列表key1的最后一个元素,并将该元素添加到另一个列表key2的左边并返回
rpoplpush <key1> <key2>


3.2 删除
#从列表左/右侧弹出元素
rpop/lpop key count

实例:
127.0.0.1:6379> lpop mylist
"f"

#删除指定元素
lrem key count value
count>0 从左到右删除最多count个元素
count<0 从右到左删除最多count绝对值个元素
count=0 删除所有

示例:
127.0.0.1:6379> lrem mylist 2 a
(integer) 2


#按照索引范围修剪列表
ltrim key start end      #只保留列表listkey第start个到end个元素

示例:
127.0.0.1:6379> LTRIM mylist 2 5
OK

3.3 查询
#获取指定范围内的元素列表
lrange key start end 

示例:
127.0.0.1:6379> LRANGE mylist 0 -1    #所有元素
1) "c"
2) "b"
3) "aaa"
4) "a"

#获取列表指定索引下标的元素
lindex key index

示例:
127.0.0.1:6379> LINDEX mylist 2
"aaa"

#获取列表长度
llen key

示例:
127.0.0.1:6379> LLEN mylist
(integer) 4

#修改指定索引下标的元素
lset key index newValue

示例:
127.0.0.1:6379> LSET mylist 2 python   #索引从0开始计算
OK
127.0.0.1:6379> LRANGE mylist 0 -1
1) "c"
2) "b"
3) "python"
4) "a"

4 set集合

应用场景:
标签,给用户添加标签
独立ip
点赞
共同好友,利用set的交集

4.1 添加元素,返回结果为添加成功的元素个数
sadd key member [member ...]

示例:
127.0.0.1:6379> sadd myset a b c d
(integer) 4


4.2 删除元素,返回结果为成功删除元素个数
srem key memeber [member ...]

示例:
127.0.0.1:6379> SREM myset a
(integer) 1

4.3 计算元素个数
scard key

示例:
127.0.0.1:6379> SCARD myset
(integer) 3


4.4 判断元素是否在集合中
sismember key member

示例:
127.0.0.1:6379> SISMEMBER myset a
(integer) 0  #不存在
127.0.0.1:6379> SISMEMBER myset b
(integer) 1  #存在


4.5 随机从集合返回指定个数元素,不会删除
srandmember key [count]

4.6 随机从集合弹出元素删除
spop key [count]

4.7 获取所有元素
smembers key


4.8 求多个集合的交集
sinter key [key ...]

4.9 求多个集合的并集
suinon key [key ...]

4.10 求多个集合差集
sdiff key [key ...]

4.11 将交集、并集、差集的结果保存
sinterstore destination key [key ...] 
suionstore destination key [key ...] 
sdiffstore destination key [key ...] 


4.12 将集合中一个member移到另一个集合
SMOVE source destination member

实例:
127.0.0.1:6379> SMOVE myset myset2 b
(integer) 1
127.0.0.1:6379> SMEMBERS myset2
1) "b"


5 zset有序集合


应用场景:
排行榜
社交网络
队列

5.1 添加成员
zadd key score member [score member ...]
zincrby key increment member    #增加成员分数

示例:
127.0.0.1:6379> ZADD myzadd 1 a 2 b 3 c 4 d 5 e 6 f
(integer) 6

5.2 计算成员个数
zcard key

5.3 计算某个成员的分数
zscore key member

5.4 计算成员的排名
zrank key member  #分数从低到高返回排名
zrevrange key member #分数从高到低返回排名

5.5 返回指定排名范围成员
zrange key start end  #从低到高
zrevrage key start end #从高到低

5.6 返回指定分数范围的成员
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]     #从低到高
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]  #从高到低

5.7 返回指定分数范围成员个数
zcount key min max

5.8 删除成员
zrem key member [member ...]

5.9 删除指定排名内的升序元素
ZREMRANGEBYRANK key start stop

5.10删除指定分数范围的成员
ZREMRANGEBYSCORE key min max

5.11 交集
ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]

5.12 并集
ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]

http://www.xdnf.cn/news/10460.html

相关文章:

  • Go语言的原子操作
  • 告别压降损耗与反向电流困扰:汽车电子电源防反接方案全面解析与理想二极管应用
  • 桥 接 模 式
  • 导入Maven项目
  • 人工智能在智能供应链中的创新应用与未来趋势
  • 数的划分--dfs+剪枝
  • 配置前端控制器
  • 【Hot 100】121. 买卖股票的最佳时机
  • 【优比】基于STM32的紧急求助定位导盲仪系统
  • python打卡训练营打卡记录day41
  • 26考研——文件管理_文件目录(4)
  • Java内存模型(JMM)与多线程编程实战
  • 【小米拥抱AI】小米开源 MiMo-7B-RL-0530
  • 湖北理元理律师事务所:用科学规划重塑债务人生
  • 什么是 TOML?
  • NHANES指标推荐:ALI
  • <4>, Qt窗口
  • mysql慢sql的实际处理方案之一
  • MySQL事务和索引原理
  • WIN32-内存管理
  • leetcode hot100刷题日记——32.杨辉三角
  • Leetcode 3231. 要删除的递增子序列的最小数量
  • Docker-搭建MySQL主从复制与双主双从
  • 解常微分方程组
  • 代码随想录算法训练营第60期第五十三天打卡
  • C57-断言函数assert
  • 【Dv3Admin】工具请求配置文件解析
  • 【PCI】PCI入门介绍(包含部分PCIe讲解)
  • [USACO1.5] 八皇后 Checker Challenge Java
  • 智慧物流园区整体解决方案