Redis笔记 -- Redis数据类型总结

1. 字符串 String

1.1 简单介绍

string是redis最基本的类型,一个key对应一个value

string类型是二进制安全的,意思是redis的string可以包含任何数据,比如jpg图片或者序列化的对象 。

string类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512M

1.2 常用命令

  • SET key value :设置指定 key 的值
  • GET key :获取指定 key 的值
  • GETSET key value :将给定 key 的值设为 value ,并返回 key 的旧值(old value)
  • GETRANGE key start end :返回 key 中字符串值的子字符(下标从start到end)
  • MGET key1 [key2..] : 获取所有(一个或多个)给定 key 的值
  • SETNX key value :只有在 key 不存在时设置 key 的值
  • MSET key value [key value ...] :同时设置一个或多个 key-value 对
  • MSETNX key value [key value ...] : 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在才会执行
  • SETRANGE key offset value : 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始
  • INCR key :将 key 中储存的数字值增一
  • INCRBY key increment :将 key 所储存的值加上给定的增量值(increment)
  • DECR key :将 key 中储存的数字值减一
  • DECRBY key decrement :将 key 所储存的值减去给定的减量值(decrement)
  • APPEND key value :如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾

1.3 应用场景

记录视频的点赞数量,每当有用户对视频进行点赞,程序就可以调用命令INCR key将对应key的值加一

2. 列表 list

2.1 简单介绍

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

它的底层实际是个双端链表,最多可以包含 2^32 - 1 个元素 (4294967295, 每个列表超过40亿个元素)

2.2 常用命令

  • LPUSH key value1 [value2] :将一个或多个值插入到列表头部(最左边)
  • RPUSH key value1 [value2] :将一个或多个值插入到列表的尾部(最右边)
  • LRANGE key start stop :返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
  • LPOP key :从左边移出并获取列表的第一个元素(整个列表的第一个元素)
  • RPOP key :从右边移除并获取列表的第一个元素(整个列表的最后一个元素)
  • LINDEX key index :通过索引获取列表中的元素
  • LLEN key :获取列表长度
  • LREM key count value :根据参数 COUNT 的值,移除列表中与参数 VALUE 相等的元素。
    • count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
    • count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
    • count = 0 : 移除表中所有与 VALUE 相等的值。
  • LTRIM key start stop :对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除
  • RPOPLPUSH source destination :移除列表的最后一个元素,并将该元素添加到另一个列表并返回。
  • LSET key index value :通过索引设置列表元素的值
  • LINSERT key BEFORE|AFTER pivot value :在列表的元素前或者后插入元素

2.3 应用场景

使用list存储公众号中的文章,list中每一个元素就代表一篇文章

3. 哈希 hash

3.1 简单介绍

Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表 ,hash 特别适合用于存储对象。

其数据结构定义类似于Map<String, Map<String, String>>

Redis 中每个 hash 可以存储 2^32 - 1 键值对(40多亿)

3.2 常用命令

  • HDEL key field2 [field2] :删除一个或多个哈希表字段
  • HEXISTS key field :查看哈希表 key 中,指定的字段是否存在。
  • HGET key field :获取存储在哈希表中指定字段的值
  • HGETALL key :获取在哈希表中指定 key 的所有字段和值
  • HINCRBY key field increment :为哈希表 key 中的指定字段的整数值加上增量 increment
  • HINCRBYFLOAT key field increment :为哈希表 key 中的指定字段的浮点数值加上增量 increment
  • HKEYS key :获取所有哈希表中的字段
  • HLEN key :获取哈希表中字段的数量
  • HMGET key field1 [field2] :获取所有给定字段的值
  • HMSET key field1 value1 [field2 value2 ] :同时将多个 field-value (域-值)对设置到哈希表 key 中
  • HSET key field value :将哈希表 key 中的字段 field 的值设为 value
  • HSETNX key field value :只有在字段 field 不存在时,设置哈希表字段的值
  • HVALS key :获取哈希表中所有值

3.3 应用场景

购物车,存放购物车中的商品id及数量,key为购物车编号,用来区分不用用户的购物车数据。field为商品id,对应的value为该商品的购买数量

4. 集合 set

4.1 简单介绍

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据,集合对象的编码可以是 intset 或者 hashtable。

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

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

4.2 常用命令

  • SADD key member1 [member2] :向集合添加一个或多个成员
  • SCARD key :获取集合的成员数
  • SISMEMBER key member :判断 member 元素是否是集合 key 的成员
  • SREM key member1 [member2] :移除集合中一个或多个成员
  • SCARD key :获取集合的成员数
  • SRANDMEMBER key [count] :返回集合中count个随机数
  • SPOP key :移除并返回集合中的一个随机元素
  • SMOVE source destination member :将 member 元素从 source 集合移动到 destination 集合
  • SDIFF key1 [key2] :返回给定所有集合的差集
  • SUNION key1 [key2] :返回所有给定集合的并集
  • SINTER key1 [key2] :返回给定所有集合的交集

4.3 应用场景

微信抽奖小程序,可以使用命令SRANDMEMBER key [count]随机弹出给定数量的用户

5. 有序集合 zset

5.1 简单介绍

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员

不同的是每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的排序

zset的成员是唯一的,但分数(score)却可以重复

zset集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 集合中最大的成员数为 2^32 - 1

5.2 常用命令

  • ZADD key score1 member1 [score2 member2] :向有序集合添加一个或多个成员,或者更新已存在成员的分数
  • ZRANGE key start stop [WITHSCORES] :通过索引区间返回有序集合中指定区间内的成员(按分数值递增(从小到大)来排序)
  • ZREVRANGE key start stop [WITHSCORES] :通过索引区间返回有序集合中指定区间内的成员(按分数值递减(从大到小)来排序)
  • ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] :通过分数返回有序集合指定区间内的成员
  • ZSCORE key member :返回有序集中,成员的分数值
  • ZCARD key :获取有序集合的成员数
  • ZREM key member [member ...] :移除有序集合中的一个或多个成员
  • ZINCRBY key increment member :有序集合中对指定成员的分数加上增量 incremen
  • ZCOUNT key min max :计算在有序集合中指定区间分数的成员数
  • ZRANK key member :返回有序集合中指定成员的索引
  • ZREVRANK key member :返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序

5.3 应用场景

各种排行榜单

6. 基数统计 HyperLogLog

6.1 简单介绍

HyperLogLog 是用来做基数统计的算法,也就是统计去掉重复数据后的数据量大小。HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定且是很小的。

在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。

但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素

HyperLogLog 统计的基数只是估算值,存在一定的误差。

6.2 常用命令

  • PFADD key element [element...] :添加指定元素到 HyperLogLog 中
  • PFCOUNT key :返回给定 HyperLogLog 的基数估算值
  • PFMERGE destkey sourcekey [soucekey...] :将多个 HyperLogLog 合并为一个 HyperLogLog

6.3 应用场景

统计服务固定时间内的访问量,对精度要求不高

7. 位图 bitmap

7.1 简单介绍

bitmap 用String类型作为底层数据结构实现的一种统计二值状态的数据类型.

位图本质是数组,它是基于String数据类型的按位的操作。该数组由多个二进制位组成,每个二进制位都对应一个偏移量(我们称之为一个索引)。

Bitmap支持的最大位数是2^32位,它可以极大的节约存储空间,使用512M内存就可以存储多达42.9亿的字节信息(2^32 = 4294967296)

7.2 常用命令

  • setbit key offset val :给指定的key的第offset位赋值val
  • getbit key offset :获取指定key的第offset位
  • bitcount key start end :返回指定key中给定区间[start,end]中1的数量
  • bitop operation destkey key :对不用的二进制存储数据进行位运算(AND, OR, NOT, XOR)

7.3 应用场景

记录用户的签到情况,签到记为1

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值