Redis的数据结构

Posted shine-rainbow

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis的数据结构相关的知识,希望对你有一定的参考价值。

  Redis的数据结构:

  • redis是key-value的数据结构,每条数据都是一个键值对
  • 键的类型是字符串
  • 注意:键不可以重复

  Redis的值分为五种:

  1. 字符串string
  2. 哈希hash
  3. 列表list
  4. 集合set
  5. 有序集合zset

1、 string类型

  • 字符串类型是Redis中最为基础的数据存储类型,它在redis中的二进制安全的,这便意味着该类型可以接收任意类型的数据,如JPEG图像数据或JSON对象描述信息等。在Redis中字符串类型的value最多可以容纳的数据长度是512M

1.1 保存

  如果设置的键不存在则为添加,如果设置的键已经存在则为修改

  例1:设置键值

set key value

  设置键为name值为java的数据

  技术分享图片

  例2:设置键为aa值为aa过期时间为3秒的数据

setex aa 3 aa

 技术分享图片

  例3:设置键位‘a1’值为‘python‘,设置键为‘a2‘值为‘java’设置键为‘a3‘,值为‘c‘

mset key1 value1 key2 value2 ....

技术分享图片

  • 追加值

append key value

  例4:向键为a1中追加值‘hahaha‘

  技术分享图片

1.2 获取

  获取:根据键获取值,如果不存在此键,返回nil

get key

  例5:获取键‘a1’的值

  技术分享图片

  根据多个键获取多个值

mget key1 key2 ...

  例6:获取a1、a2、a3的值

 技术分享图片

2 键命令

  • 查找键 参数支持正则表达式

keys pattern

  例1:查看所有的键

  技术分享图片

  例2:查看名称中包含a的键

  技术分享图片

  判断键是否存在,如果存在返回1、不存在返回0

exists key1

  例3:查看键 ‘a1’是否存在  

技术分享图片

  查看键对应的value的类型

type key

  例4:查看键a1的值类型,为redis支持的五种类型中的一种  

技术分享图片

  删除键及对应的值

del key1 key2 ...

  例5:删除键a1、a2、a3

  技术分享图片

  设置过期时间、以秒为单位

  如果没有指定过期时间,则一直存在,直到使用DEL将其删除

expire key seconds

  例6:设置键 ‘a1’ 的过期时间为3秒

expire a1 3

  技术分享图片

  查看有效时间,以秒为单位

ttl key

  例7:查看bb的有效时间

  技术分享图片

3、hash类型

  • hash用于存储对象,对象的结构为属性、值、使用redis存储对象信息
  • 值的类型为string

3.1 增加、修改

  设置单个属性

hset key field value

  例1:设置键user的属性name为jack

  技术分享图片

  例2:设置键u2的属性 name为tom、属性age为11

hset u2 name tom age 11

  技术分享图片

3.2 获取

  • 获取

  获取指定键所有的属性

hkeys key

  例3:获取u2的所有属性

  技术分享图片

  获取一个属性的值

hget key field

  例4:获取键u2属性‘name‘的值

  技术分享图片

  获取多个属性的值

hget key field1 field2...

  例5:获取键u2属性‘name‘、‘age’的值

  技术分享图片

  获取所有属性的值

hvals key

  例6:获取键‘u2’所有属性的值

  技术分享图片

3.3 删除

  • 删除整个hash键及值、使用del命令
  • 删除属性、属性对应的值会被一起删除
hdel key1 field1 field2

  例7:删除键‘u2‘的属性‘age’

hdel u2 age

  技术分享图片

4、list类型

  • 列表的元素属性为string
  • 按照插入顺序排序

  4.1 增加

  在左侧插入数据lpush(left )从 左侧插入

lpush key value1 value2

  例1:从键为‘a1‘的列表左侧加入数据a、b、c

技术分享图片

   从右侧插入数据

rpush key value1 value2 ...

  例2:从键为‘a1‘的列表右侧加入数据0、1

技术分享图片

  在指定元素的前或后插入新元素

linsert key before 或 after 现有元素 新元素

  例3:在键为‘a1‘的列表中元素‘b’前加入‘3‘

技术分享图片

  4.2、获取

  •  返回列表里指定范围内的元素
    • start、stop伪元素的下标索引
    • 索引从左侧开始,第一个元素为0
    • 索引可以是负数,表示从尾部开始技术,如-1表示最后一个元素
lrange key start stop

  例4:获取键为‘a1’的列表所有值

lrange a1 0 -1

 技术分享图片

  设置指定索引位置的元素

  • 索引从左侧开始,第一个元素为0
  • 索引可以是负数、表示尾部开始计数,如-1表示最后一个元素
lset key index value

  例5:修改键为‘a1‘的列表中下标为1的元素值为‘z’

  技术分享图片

  4.3 删除

  • 删除指定元素
    • 将列表中前count次数显的值为value的元素移除
    • count >0:从头往尾移除
    • count<0:从尾往头移除
    • count=0:移除所有
lrem key count value

  例6.1:向列表‘a‘中追加元素‘a‘、‘b‘、‘a‘、‘b‘、‘a‘、‘b‘,并从‘a‘;列表右侧开始删除两个‘b‘

   技术分享图片

5 set类型

  • 无序集合
  • 元素为string类型
  • 元素具有唯一性、不重复
  • 说明:对于集合没有修改操作

  5.1 增加

  添加元素

sadd key member1 member2

  例1:向键‘a3’的集合中添加元素‘alex’、‘egon’、‘wusir’

  技术分享图片

  5.2、获取

  返回所有的元素

  例2:获取键‘a3’集合中的所有元素

smember a3

技术分享图片

  5.3、删除

  删除指定元素

srem key

  例3:删除键‘a3’的集合中元素‘wusir‘

  技术分享图片

6、ZSet

  • sorted set,有序集合
  • 元素为string类型
  • 元素具有唯一性、不重复
  • 每个元素都会关联一个double类型的score,表示权重,通过权重将元素从小到大排序
  • 说明:没有修改操作

  6.1 增加

zadd key score1 member1 score2 member2 ...

  例1:向键‘a4’的集合添加元素‘jing’、‘eva’、‘jin’,分别设置权重为4、5、3、

zadd a4 4 jing 5 eva 6 jin

技术分享图片

  6.2 获取

  • 返回指定范围的元素
  • start、stop为元素的下标索引
  • 索引可以从左侧开始、第一个元素是0
  • 索引可以是负数、表示从尾部开始计数。如-1表示最后一个元素
zrange key start stop

  技术分享图片

  返回score值在min和max之间的元素

zrangebyscore key min max

  例3:获取键‘a4‘的集合中权值在4和6之间的成员

  技术分享图片

 返回成员member的score值

zscore key member

  例4:获取键‘a4‘的集合中元素为eva的权重

  技术分享图片

  6.3删除

  删除指定元素

zrem key member1member2

  例5:删除集合‘a4‘中元素‘eva’

  技术分享图片

  删除权重在指定范围的元素

zremrangebyscore key min max

  例6:删除集合‘a4‘中权重在5、6之间的元素

  技术分享图片

 

  

 

    

 


以上是关于Redis的数据结构的主要内容,如果未能解决你的问题,请参考以下文章

jedis连接redis

Redis 学习 —— 数据类型及操作

Redis实现分布式锁(设计模式应用实战)

Redis实现分布式锁(设计模式应用实战)

VSCode自定义代码片段5——HTML元素结构

VSCode自定义代码片段5——HTML元素结构