Redis中5种数据结构解析

  • Redis(Remote Dictionary Server)远程词典服务器

    • 开源的的内存数据库,C语言编写的,可基于内存可持久化(异步保存到硬盘上),提供多种语言的API。以其高性能、丰富的数据类型以及简单的单线程模型等特点而广受欢迎。Redis提供了一个高性能的键值(key-value)存储系统,能够支持每秒数十万次的读写操作,因此特别适用于处理高并发请求和需要快速响应的场景,如缓存、会话管理、排行榜等。它支持多种数据结构,包括字符串、列表、哈希表、集合、有序集合等,为开发者提供了灵活的数据操作能力,可以适应各种不同的应用场景。

  • 全局命令

    • SELECT number 选择所在库(number在db0~db15之间)

    • KEYS * 查看KEY

    • TYPE key 查看KEY数据类型

    • DEL key 删除KEY

    • FLUSHDB 清空当前库

    • FLUSHALL 清除所有库数据

  • 五种数据结构

    • 字符串String:字符串是最基本的 key-value 数据类型

      • Map<String,String> 例如:key:车站的id value:车站的详情

      • set key value 设置一个key-value

      • get key 获取key的值

      • set key value nx # not exists key不存在时再进行设置(nx)

      • set key value ex seconds 设置过期时间(ex)

      • strlen key 获取长度

      • INCRBY key 步长

      • DECRBY key 步长

      • incrbyfloat key step 浮点数操作:自动先转为数字类型,然后再进行相加减,不能使用append

    • 集合Set:集合是无序的字符串集合,通常用于执行集合操作。

      • map套set,set放的是不重复的value Map<String,Set<>>

      • 例如:key:车站的id value:set 放一个站的id,对应的站详情

      • SADD key member1 member2 增加一个或者多个元素,自动去重

      • SMEMBERS key 查看集合中所有元素

      • SREM key member1 member2 删除一个或者多个元素,元素不存在自动忽略

      • SISMEMBER key member 元素是否存在

      • SRANDOMMEMBER key count 随机返回集合中指定个数的元素,默认为1个

      • SCARD key 返回存储在指定key对应的集合中的成员数量,如果key不存在就会返回0

      • SMOVE source destination member 把元素从source集合移动到destination集合 member不能存在返回0 destination不存在创建destination

      • SDIFF key1 key2 差集

      • SDIFFSTORE destination key1 key2 差集保存到destination

      • SINTER key1 key2 交集

      • SINTERSTORE key1 key2 交集保存到destination

      • SUNION key1 key2 并集

      • SUNION key1 key2 并集保存到destination

    • 散列Hash哈希是键值对集合,适用于存储小型结构化数据。

      • 优点:每创建一个键,它都会为这个键储存一些附加的管理信息(比如这个键的类型,这个键最后 一次被访问的时间等)键越多,redis数据库在储存附件管理信息方面耗费内存越多,花在管理数据库键上的CPU也会越多。

      • 缺点:使用过期键功能:键过期功能只能对键进行过期操作,而不能对散列的字段进行过期操作 。

      • map套map map 可以放重复 map结构

      • Map<String,Map<String,value>>

      • 设置单个字段 HSET key field value 或 HSETNX key field value

      • 设置多个字段 HMSET key field value field value

      • 返回字段个数 HLEN key

      • 判断字段是否存在(不存在返回0)HEXISTS key field

      • 返回字段值 HGET key field

      • 返回多个字段值 HMGET key field filed

      • 返回所有的键值对 HGETALL key

      • 返回所有字段名 HKEYS key

      • 返回所有值 HVALS key

      • 删除指定字段 HDEL key field

      • 在key对应filed上进行整数增量运算 HINCRBY key filed increment

      • 在字段对应值上进行浮点数增量increment 运算 HINCRBYFLOAT key field increment

    • 列表List map 套list List 可以放重复下标index

      • 列表是简单的字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部(左边)或者尾部(右边)。

      • 列表头尾增删快,中间增删慢,增删元素是常态

      • Map<String,List<>>

      • 从列表left头部压入元素 LPUSH key value1 value2

      • 从列表right尾部压入元素 RPUSH key value1 value2

      • 从列表src尾部弹出1个元素,压入到列表dst的头部 RPOPLPUSH src dst

      • 在列表指定元素后/前插入元素 LINSERT key after|before value newvalue

      • 查看列表中元素 LRANGE key start stop

      • 查看列表中所有元素 LRANGE key 0 -1

      • 获取列表长度 LLEN key

      • 从列表头部弹出1个元素 LPOP key

      • 从列表尾部弹出1个元素 RPOP key

      • 列表头部,阻塞弹出,列表为空时阻塞 BLPOP key timeout

      • 列表尾部,阻塞弹出,列表为空时阻塞 BRPOP key timeout

      • 关于BLPOP 和 BRPOP

      • 1、如果弹出的列表不存在或者为空,就会阻塞

      • 2、超时时间设置为0,就是永久阻塞,直到有数据可以弹出

      • 3、如果多个客户端阻塞再同一个列表上,使用First In First Service原则,先到先服务

      • 删除指定元素 LREM key count value

      • count>0:表示从头部开始向表尾搜索,移除与value相等的元素,数量为count

      • count<0:表示从尾部开始向表头搜索,移除与value相等的元素,数量为count

      • count=0:移除表中所有与value相等的值

      • 保留指定范围内的元素 LTRIM key start stop

      • LRTIM mylist1 0 2 # 只保留前3条

      • 应用场景: 保存微博评论最后500条

      • LTRIM weibo:comments 0 499

      • LSET key index newvalue

    • 有序集合Zset:有序集合是一种可排序的集合,通过分数来进行排序。

      • map 套set set 放的是不重复的value并且可以排序

      • 每个元素都关联着一个浮点数分值(score),并按照分支从小到大的顺序排列集合中的元素(分值可以相同)

      • Map<String,TreeSet<>>

      • 在有序集合中添加一个成员 ZADD key score member

      • 查看指定区间元素(升序) ZRANGE key start stop [withscores]

      • 查看指定区间元素(降序) ZREVRANGE key start stop [withscores]

      • 删除成员 zrem key member

      • 增加或者减少分值 zincrby key increment member

      • 返回元素排名 zrank key member

      • 返回元素逆序排名 zrevrank key member

      • 返回集合中元素个数 zcard key

      • 并集 ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight1 [weight2 ...]] [AGGREGATE SUM|MIN|MAX]

      • 交集 和并集类似,只取相同的元素 ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]

  • 21
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值