Redis中的常用数据结构

目录

String类型

Hash类型

List类型

Set类型

SortedSet类型

 全局命令

集合中的交并补


String类型

//set,get型

set key value

get key

//设置一个10s后过期的键值对  ex单位是s

set key value ex 10 或者 setex key 10 value

//设置一个10ms后过期的键值对  px单位是ms

set key value px 10 或者 psetex key 10 value

//当不存在key时,才可以存储,相当于唯一插入,nx标识

set key value nx;  或者 setnx key value;

//当存在key时,才可以设置,相当于更新操作,xx标识

set key value xx;

//一次存储或获取多个key,value,减少网络通信次数,mset,mget

mset key1 value1 key2 value2 key3 value3;

mget key1 key2 key3;

加减运算命令

1.针对value为Integer类型

incr key  //加一操作

decr key //减一操作

incrby key 10   //加10   

incrby key -10  //减10  或者使用decrby

2.针对小数

incrbyfloat key 1.1 

incrbyfloat key -1.1

Hash类型

相当于一种key key value.

hset,hget

hset user id 1

hget user id

hexists user id  是否存在KK

hdel user id user name...  //删除一个或多个KK

hkeys user  //查找K对应的所有K(filed)

hvals user  //查找KK对应的所有value

hgetall user //查找K对应的所有key-value键值对

hmset ,hmget //一次设置或查找多个Hash类型的键值对

hmset user id 1 username lisi password 111

hmget user id username password   //得到多个value

hlen user //获取指定哈希表中键值对的个数   

hsetnx user id      //即id这个filed不存在才能插入

//对hash表中的value进行加减运算

hincrby user id 1 //针对Integer类型

hincrbyfloat user money  1.1   //针对小数类型

hstrlen user id  //获取value的长度

List类型

本质上是数组,顺序表,redis中的list对数组提供了头插(lpush),头删(lpop),未插(rpush),尾删(rpop)。更像是一个双端队列。使用下标进行操作,元素可以重复,有顺序。

lpush key value1 value2 ...  //头插

lrange id 0 -1 //查找列表id的所有value 范围查找, -1 表示最后一个元素  

lindex key 0  //查找下标为0的value

linsert id before/after 2 10   ///在2的前面或后面插入一个10 如果指定的元素在list中是有多个的。则linsert会从左到右找到第一个元素进行操作。

lpushx,rpushx //当指定List数组存在时,才能插入

lrem id 5 1  //删除元素1,并且删除个数为5个。删除指定元素及元素的个数 List是可以重复的

5的正负代表删除的方向,正数是从左到右找并删除,负数是从右到左找并删除。

ltrim id start end //截取并更新原value,闭区间

lset id 2 10 //将下标为2的元素更新为10 下标越界会报错

llen id //获取指定列表中元素的个数

blpop  brpop 带有阻塞性质的出队操作。

在列表有元素的情况下,和lpop,rpop表现是一样的。但如果列表中没有元素,非阻塞版本会立即返回nil,阻塞版本会等待阻塞一段时间timeout,若list中还是没有添加新的元素,才会返回nil。若在等待时间内有了新元素,则会立即返回,解除等待。并且阻塞期间也是可以执行其他命令。当 list 处于阻塞时,这时有多个客户端访问命令,后面list添加新元素了,会先来先到。

并且这个超时等待时间是可以代码手动设置的,如下,获取过期时间为60s

blpop id 60 即pop之前没有元素,会阻塞等待60s,60s内有元素进来,则弹出去,没有就返回空。

Set类型

Set集合中的元素具有唯一性,无序性

sadd id 1 2 3 4 5... //向id集合中插入多个元素 元素若重复,只插入一个

smembers id     //查看id集合中所有的元素

sismember id 1   //查看id集合中元素1是否存在

spop [count]  //删除count个元素的个数

srandmember key [count]  //随机从集合中返回一个或多个元素。

smove key1 key2 member  //将一个元素member从集合key1中移动到key2中,具体过程是key1中删除这个元素,key2中添加这个元素。

srem key member1,member2... //从集合中一次性删除一个或多个元素

scard key //得到指定集合中元素的个数

SortedSet类型

有序集合,引入了score属性,就是按照这个分数进行排序(升序),元素有序,不重复

 zadd key [NX|XX] [CH] [INCR] score member [score member ...]  可以一次性插入多个

XX:更新操作,该元素之前存在才操作

NX:插入操作,即该元素之前不存在才操作

INCR: 修改元素对应的分数做加法/减法运算

zrange key 0 -1 [withscores]  //查找范围内的元素,有withscores还会返回对应的分数

zrevrange key 0 -1 [withscores] //同上,逆序输出。即降序。

zcard key //获取集合中所有元素的个数

zcount key minscore maxscore //通过一个分数区间,返回在区间内的member个数,闭区间

若想要开区间,加左括号 zcount key (minscore (maxscore

zrangebyscore key minscore maxscore //同上,也是指定一个分数区间,但返回值不同,返回的是集合的元素,而非个数

zpopmax/zpopmin key count  // 删除并返回分数最高/最低的count个元素。

bzpopmax/bzpopmin key timeout //带有阻塞性质的删除元素,超时等待,可以设置超时时间

zrank  //获取到指定元素的排名(下标)

zrevrank  //也是获取到指定元素的下标

zscore key member //根据指定的member查找并返回score分数

zrem key member1 member2.. //删除有序集合中的一个或多个元素

zremrangebyrank  //指定一个区间(下标),对这个闭区间内的所有元素进行删除

zremrangebyscore //同上 指定一个区间(分数score),对这个闭区间内的所有元素进行删除

zincrby //给指定的元素member对应的score加一个数字,即修改分数

 全局命令

flushall     //删除所有数据库的所有键值对

keys *            //获取所有的key

del key1 key2...  // 删除一个或多个key

exists key       //是否存在key

ttl key         // key的存活时间 单位s -1表示不会过期  -2 表示已经过期

pttl key        //key的存活时间 单位ms -1表示不会过期  -2 表示已经过期

expire key 60       //设置key的存活时间 单位s

pexpire key 1000     //设置key的存活时间 单位ms

type key   //查看key对应的value的类型 如none(查找不存在的key),string,list,set,zset(压缩set),hash,stream(消息队列)等。

object encoding key  //查看key对应value的详细数据类型

集合中的交并补

sinter key1 key2 key3 ... //对多个集合求交集 返回交集元素

sinterstore destination key1 key2..  //和上面一样也是求交集,不同的是此操作会将交集元素存放在destination这个指定的集合中,返回的是交集元素的个数。

sunion key1 key2... //对多个集合求并集 返回并集元素

//sinterstore 同上

sdiff key1 key2... //对多个集合求差集 返回并集元素

//sinterstore 同上

redis中的数据库是现成的,用户自己不能进行创建,也不能删除,默认redis中有16个数据库,编号0-15,这些数据库之间是相互独立的,我们之前所操作的string,hash,set,zset等都默认是在0号数据库中的。

select 0 表示选择0号数据库。

dbsize 查看当前所在数据库的所有元素个数

flushdb 删除当前数据库的所有元素 工作中禁用

flushall 删除所有数据库中的所有元素 工作中禁用

相关推荐

  1. Redis数据结构

    2024-03-23 13:16:02       16 阅读
  2. Redis数据结构法和使用场景

    2024-03-23 13:16:02       17 阅读
  3. Redis五种数据结构以及其底层实现

    2024-03-23 13:16:02       31 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-23 13:16:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-23 13:16:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-23 13:16:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-23 13:16:02       18 阅读

热门阅读

  1. C# 线程锁使用

    2024-03-23 13:16:02       18 阅读
  2. Android输入法相关(二)

    2024-03-23 13:16:02       18 阅读
  3. 怎样保持SSH长时连接不断开(客户机)

    2024-03-23 13:16:02       19 阅读
  4. 服务器硬防和软防是什么?

    2024-03-23 13:16:02       19 阅读
  5. Linux 文件系统:动静态库

    2024-03-23 13:16:02       23 阅读
  6. Keepalived 踩坑

    2024-03-23 13:16:02       24 阅读
  7. ArrayList的常用方法

    2024-03-23 13:16:02       16 阅读