Redis的常用数据类型

野性酷女 2023-08-17 17:43 228阅读 0赞

文章目录

      • 一. String类型
      • 二. Hash 类型
      • 三. List类型
      • 四. Set
      • 五. Sorted Set

一. String类型

String类型为最基本的数据类型, 二进制安全. 可以存储任何的数据 ,包含jpg图片, 序列化的对象等等.
对String类型的指令演示命令如下图所示:
设置值就采用set 键 值 的形式
获取值就采用get 键 的形式, 通过键获取值. 如果键相同, 则会自动覆盖原来的值.
下图也演示了, 如果值为整数类型, 可以使用incr 键 的方式对数值进行加一 .
watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzMjI5NjY5_size_16_color_FFFFFF_t_70
如果数值不是整数, 使用incr函数会报错 , 提示如下 :
(error) ERR value is not an integer or out of rangewatermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzMjI5NjY5_size_16_color_FFFFFF_t_70 1
redis的单个操作都是原子性的(一个事务是不可分割的最小工作单位. 事务中包含的操作,要么全部成功, 要么全部失败. ) . redis的原子性, 使得开发者不用考虑并发的问题, 可以使用incr来实行自增的操作.

String类型之所以能存储二进制数据, 是因为底层的sds动态字符串.
watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzMjI5NjY5_size_16_color_FFFFFF_t_70 2

二. Hash 类型

Hash类型为String元素组成的字典, 适用于存储对象,存储对象中的键和值.
演示的命令如下:
给对象初始化赋值, 采用hmset命令, 声明”lilei”为对象, 设置了两个属性”name”和”age”.
获取值采用hget 对象名 属性 的方式获取.
修改单一的属性的值,可以用hget 来修改, 也可以用hmset修改多个属性的值.

  1. 127.0.0.1:6379> hmset lilei name "LiLei" age 26 title "Senior"
  2. OK
  3. 127.0.0.1:6379> hget lilei age
  4. "26"
  5. 127.0.0.1:6379> hget lilei title
  6. "Senior"
  7. 127.0.0.1:6379> hset lilei title "Pricipal"
  8. (integer) 0
  9. 127.0.0.1:6379> hget lilei title
  10. "Pricipal"
  11. 127.0.0.1:6379> hmset lilei name "jack" age 28
  12. OK
  13. 127.0.0.1:6379> hget lilei title
  14. "Pricipal"

三. List类型

List类型为列表, 按照String元素的插入顺序排序
List类型的演示如下. 给起名为mylist的列表添加了三个元素, 依次添加aaa bbb ccc
使用lrange命令取出, 0 2为取出下标为0到2的三个元素.
可以使用后进先出的特性, 用于最新消息的功能.

  1. 127.0.0.1:6379> lpush mylist aaa
  2. (integer) 1
  3. 127.0.0.1:6379> lpush mylist bbb
  4. (integer) 2
  5. 127.0.0.1:6379> lpush mylist ccc
  6. (integer) 3
  7. 127.0.0.1:6379> lrange mylist 0 2
  8. 1) "ccc"
  9. 2) "bbb"
  10. 3) "aaa"
  11. 127.0.0.1:6379>

四. Set

Set为String元素组成的无序集合 , 通过哈希表实现, 不允许重复.

Set的演示代码如下, 往集合中添加数据为sadd, 显示集合中的数据为smembers

  1. 127.0.0.1:6379> sadd myset 111
  2. (integer) 1
  3. 127.0.0.1:6379> sadd myset 222
  4. (integer) 1
  5. 127.0.0.1:6379> sadd myset 333
  6. (integer) 1
  7. 127.0.0.1:6379> sadd myset 222
  8. (integer) 0
  9. 127.0.0.1:6379> smembers myset
  10. 1) "111"
  11. 2) "222"
  12. 3) "333"
  13. 127.0.0.1:6379> sadd myset aaa
  14. (integer) 1
  15. 127.0.0.1:6379> sadd myset bbb
  16. (integer) 1
  17. 127.0.0.1:6379> sadd myset ccc
  18. (integer) 1
  19. 127.0.0.1:6379> smembers myset
  20. 1) "333"
  21. 2) "222"
  22. 3) "111"
  23. 4) "ccc"
  24. 5) "bbb"
  25. 6) "aaa"

五. Sorted Set

为上一个Set类型的有序版本, 通过分数来为集合中的成员进行从小到大的排序.
Sorted Set 演示代码如下:
增加元素的命令为zadd , 第二个参数为集合名称, 第三个参数为排名的分数, 第四个参数为值.
添加成功,会返回1, 失败会返回0. 即使分数相同,值不同也能添加到集合中.
分数越高的, 取出来时, 越靠后.

  1. 127.0.0.1:6379> zadd myzset 3 abc
  2. (integer) 1
  3. 127.0.0.1:6379> zadd myzset 1 abd
  4. (integer) 1
  5. 127.0.0.1:6379> zadd myzset 2 asd
  6. (integer) 1
  7. 127.0.0.1:6379> zadd myzset 2 asd
  8. (integer) 0
  9. 127.0.0.1:6379> zadd myzset 1 abt
  10. (integer) 1
  11. 127.0.0.1:6379> zrangebyscore myzset 0 3
  12. 1) "abd"
  13. 2) "abt"
  14. 3) "asd"
  15. 4) "abc"

Redis的数据类型, 除了以上介绍的五种,还有用于计数的HyperLogLog
和用于支持存储地理位置信息的Geo

Redis底层数据类型的基础 :
watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzMjI5NjY5_size_16_color_FFFFFF_t_70 3

发表评论

表情:
评论列表 (有 0 条评论,228人围观)

还没有评论,来说两句吧...

相关阅读