Redis 五大基本数据类型常见命令

一、redis中的常见数据结构

Redis共有5种常见数据结构,分别字符串(STRING)、列表(LIST)、集合(SET)、散列(HASH)、有序集合(ZSET)。

二、redis中五大基本数据类型介绍

字符串(String)介绍

String 类型是一个 k-v 键值对形式的数据类型,一个 key 对应一个 value。

使用场景:

  1. 计数器
  2. 统计多单位的数量(uid:122:follow 10)
  3. 粉丝数
  4. 对象缓存存储
  5. ...

列表(List)介绍

集合中的值 可以 重复

集合(Set)介绍

集合中的值 不能 重复(无序)

哈希(Hash)介绍

key - Map or key - <k,v>,value 是一个 Map

用户信息保存,经常变动的信息,适合对象的存储

有序集合(Zset)介绍

在Set基础上增加了一个值(用于排序的值)

存储班级成绩表,工资表排序,

普通消息 = 1,重要消息 = 2,带权重进行判断

排行榜应用实现

三、String 常见命令及对库的命令

1.Redis 默认有16个数据库(0~15),默认使用第0个

可以使用 select 进行切换

2.查看数据库大小

使用 dbsize查看数据库大小

3.查看所有的key(当前库)

使用 keys *

4.清除当前数据库

flushdb

5.清空所有数据库

flushall

6.判断key是否存在

exists  key

7.移除key

move key 1 // 1 表示移动到哪个数据库

del key // 删除当前数据库的key(可以多个)

8.设置key的过期时间

expire key 时间 // 单位时间为s

ttl key // 查看剩余存活时间

9.查看当前key的类型

type key

10.字符串追加(String)

append key appendValue

  • 如果当前 key 不存在,作用相当于 set key

11.获取字符串长度(String)

strlen key

12.字符串i++操作(可用于阅读量实现)(String)

incr key

同理,i --

decr key

步长设置

incrby key 步长

decrby key 步长

13.字符串片段 Range (String)(Range:范围)

getrange key [startIndex] [endIndex]

  • 对应java里的substring(但是这里会endIndex是一个闭区间)
  • 特例,endIndex = -1 时,表示从startIndex 到最后

14.字符串替换 (String)(Range:范围)

setrange key index replaceString

  • 对应java里的replace
  • 注意,如果replaceString是一个字符串,那么会替换源字符串中index后replaceString长度的片段,结果如下

15.特殊set设置 (String)

setex(set with expire)

setex key 时间 value // 设置值,带过期时间

setnx(set if not exist)

setnx key value // 如果不存在,则设置

16.批量设置、批量获取(原子性操作) (String)

mset k1 v1 k2 v2 …

mget k1 k2 …

  • 特殊
    • msetnx 批量设置(要么都成功,要么都失败)(原子性)

17.设置高阶 (String)

1)getset

getset key value // 先get再set(如果不存在,先返回nil,在设置值;如果存在,就先返回原值,再设置新值)

18.重命名key

rename key newName

四、List(列表)常见命令

使用场景:

  1. 栈(lpush、lpop)
  2. 队列(lpush、rpop)
    1. 消息队列
  3. 阻塞队列
  4. ....

1.从头部/尾部 插入 数据,以及数据 显示

lpush key value   // 从左边插入一个值

rpush key value   // 从右边插入一个值

lrange key 0 -1    // 从下标 0 开始,-1 代表遍历完

2.从头部/尾部 移除 数据

lpop key

rpop key

3.获取 指定索引的值

lindex key index

4.获取列表长度

llen key

5.移除指定的值

lrem key count(移除的个数) element

6.列表修剪 trim

        相当于 Java 中的 substring() 

ltrim key startIndex endIndex

7.也可以使用set

lset key index value // 将列表中 指定 index 的值替换为对应的 value

  • 需要保证key和index都存在,否则报错

8.插入指定的值

linsert key before|after pivot(那个值后) value

五、Set(集合)

集合中的值不能重复(无序)

1.添加成员到集合中,并查看所有成员

sadd key member

smembers key

2.判定成员是否存在

sismember key member

3.查看集合长度(特别)

scard key

4.移除指定的成员

srem key member

5.获取集合中的随机成员

srandmember key [count]

6.随机移除成员

spop key [count]

7.移动集合成员到其他集合

smove source destination member(需要移动的成员)

8.数字集合类:

  • 差集 sdiff key1 ,key2 …
  • 交集(共同好友)sinter key1,key2 …
  • 并集 sunion key1 ,key2 …

六、Hash(哈希)

key - Map  or  key - <k,v>,value 是一个 Map。

应用场景:用户信息保存,经常变动的信息,适合对象的存储 

1.简单存储Map和获取Map

hset key field value

hmset key field value [k1 v1 [k2 v2 …]]  // 批量添加一个 Hash 中的 key 和 value

hget key field

2.获取所有Map字段及值

hgetall key

3.删除Map中的字段

hdel key field

4.查看Map中某字段是否存在

hexists key field

5.获取所有字段或者所有字段对应的值

hkeys key // 此处的key是Map名

hvals key

6.增量i++

hincrby key field value

7.不存在,就添加成功

hsetnx key field value // field 在map中不存在就添加这个值,否则不做改变

8.适合存储对象(hmset)

在Set基础上增加了一个值(用于排序的值)

存储班级成绩表,工资表排序,

普通消息 = 1,重要消息 = 2,带权重进行判断

排行榜应用实现

七、Zset(有序集合) 

1.添加 和 获取

zadd key n value

zrange key startIndex endIndex

2.排序实现(升序和降序)

zrangebyscore key -inf +inf [withscores] // 升序

zrange key 0 -1

zrevrangebyscore key +inf -inf [withscores] // 降序

zrevrange key 0 -1

zrangebyscore key -inf 任意值n // 升序 + 显示区间 [-inf,n]

3.移除指定的值

zrem key value

4.集合的长度

zcard key

5.指定区间的集合长度

zcount key startIndex endIndex

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值