Redis数据类型

今天回顾了一下Redis的数据类型

Redis有5种数据类型

  • String类型(基本类型 可存图片)

  • hash类型(键值对的结合 可存对象)

  • list类型(链表结构的集合)

  • set类型(无序集合)

  • zset类型(有序集合)


String类型

String是Redis最基本的数据类型 结构是key,value的形式 类似map集合
String类型二进制安全的 可以存储序列化的数据 比如一张图片
String类型的最大能存储512M。

基本语法

  • set key value -> 存入键值对

  • get key -> 根据键取出值

  • incr key -> 把值递增1

  • decr key -> 把值递减1

  • del key -> 根据键删除键值对

  • setex key timeout value -> 存入键值对,timeout表示失效时间,单位s

  • ttl key->可以查询出当前的key还剩余多长时间过期

  • setnx key value -> 如果key已经存在,不做操作, 如果key不存在,直接添加

进阶语法

  • incrby key num -> 偏移值

  • mset k1 v1 k2 v2 ... -> 批量存入键值对

  • mget k1 k2 ... -> 批量取出键值

  • append key 'value' -> 原值后拼接新内容

  • setnx key value -> 存入键值对,键存在时不存入

  • setex key timeout value -> 存入键值对,timeout表示失效时间,单位s

  • ttl ->可以查询出当前的key还剩余多长时间过期

  • setrange key index value -> 修改键对应的值,index表示开始的索引位置

hash类型

Hash类型是String类型的 field 和 value 的映射表,或者说是一个String集合。
它特别适合存储对象,相比较而言,将一个对象存储在Hash类型里要比存储在String类型里占用更少的内存空间,并方便存储整个对象。
Redis 中每个 hash 最多可以存储 2^32 - 1 键值对(40多亿)。

基本语法

  • hset key hashkey hashvalue -> 存入一个hash对象

  • hget key hashkey -> 根据hash对象键取去值

  • hexists key hashkey -> 判断hash对象是含有某个键

  • hdel key hashkey -> 根据hashkey删除hash对象键值对

进阶语法

  • hincrby key hashkey 递增值 -> 递增hashkey对应的值

  • hlen key -> 获取hash对象键的数量

  • hkeys key -> 获取hash对象的所有键

  • hvals key -> 获取hash对象的所有值

  • hgetall key -> 获取hash对象的所有数据

  • 同样有hsetnx,其作用跟用法和setnx一样

list类型

Redis中的List类似Java中的queue,也可以当做List来用。
List类型是一个链表结构的集合,其主要功能有push,pop,获取元素等。
更详细的说,List类型是一个双端链表的结构,我们可以通过相关操作进行集合的头部或者尾部添加删除元素,list的设计非常简单精巧,即可以作为栈,又可以作为队列。能满足绝大多数需求。

基本语法

  • rpush key value -> 往列表右边添加数据

  • lrange key start end -> 范围显示列表数据,全显示则设置0 -1

  • lpush key value -> 往列表左边添加数据

  • lpop key -> 弹出列表最左边的数据

  • rpop key -> 弹出列表最右边的数据

  • llen key -> 获取列表长度

进阶语法

  • linsert key before/after refVal newVal -> 参考值之前/后插入数据

  • lset key index value -> 根据索引修改数据

  • lrem key count value -> 在列表中按照个数删除数据

  • ltrim key start end -> 范围截取列表

  • lindex key index -> 根据索引取列表中数据

set集合

Set集合是string类型的无序集合,set是通过hashtable实现的,对集合我们可以取交集,并集,差集。并且支持随机获取元素。

Set集合成员是唯一的,这就意味着集合中不能出现重复的数据,如果插入重复元素,Redis会忽略该操作。

Set集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

基本语法

  • sadd key value -> 往set集合中添加元素

  • smembers key -> 列出set集合中的元素

  • srem key value -> 删除set集合中的元素

  • spop key count -> 随机弹出集合中的元素

进阶语法

  • sdiff key1 key2 -> 返回key1中特有元素(差集)

  • sdiffstore var key1 key2 -> 返回key1中特有元素存入另一个set集合

  • sinter key1 key2 -> 返回两个set集合的交集

  • sinterstore var key1 key2 -> 返回两个set集合的交集存入另一个set集合

  • sunion key1 key2 -> 返回两个set集合的并集

  • sunionstore var key1 key2 -> 返回两个set集合的并集存入另一个set集合

  • smove key1 key2 value -> 把key1中的某元素移入key2中

  • scard key -> 返回set集合中元素个数

  • sismember key value -> 判断集合是否包含某个值

  • srandmember key count -> 随机获取set集合中元素

zset集合

zset有序集合和set集合一样也是String类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。Redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

集合中最大的成员数为 2^32 - 1 ,即每个集合最多可存储40多亿个成员。

需要注意的是,Redis有序集合是默认升序的,score越低排名越靠前,即score越低的元素下标越小。

基本语法

zadd key score column -> 存入分数和名称

zincrby key score column -> 偏移名称对应的分数

zrange key start end -> 按照分数升序输出名称

zrevrange key start end -> 按照分数降序输出名称

zrank key name -> 升序返回排名

zrevrank key name -> 降序返回排名

zcard key -> 返回元素个数

进阶语法

zrangebyscore key min max [withscores] -> 按照分数范围升序输出名称

zrevrangebyscore key max min [withscores] -> 按照分数范围降序输出名称

zrem key name -> 删除名称和分数

zremrangebyscore key min max [withscores] -> 根据分数范围删除元素

zremrangebyrank key start end -> 根据排名删除元素

zcount key min max -> 按照分数范围统计个数

总结

1>如果要排序选用zset

2>如果数据是多个且允许重复选用list

3>如果数据是多个且不允许重复选用set

4>剩下的使用string

5>如果是对象类型也可使用hash

posted @   Cloong  阅读(693)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示