当前位置:   article > 正文

Redis基础数据结构String:你知道String长度限制多少吗_redis string最大长度

redis string最大长度

        字符串String是Redis最简单最常用的数据结构,它的内部表示就是一个字符数组,如图所示。Redis所有的数据结构都是以唯一的key字符串作为名称,然后通过这个唯一key值来获取相应的value数据。不同类型的数据结构的差异就在于value的结构不一样

 

image.png

 

 

一、存储

      Redis的字符串是动态字符串,是可以修改的字符串,内部结构的实现类似于Java的ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配,如图2所示,内部为当前字符串分配的实际空间capacity一般要高于实际字符串长度len。当字符串长度小于1MB时,扩容都是加倍现有的空间。如果字符串长度超过1MB,扩容时一次只会多扩1MB的空间。字符串最大长度为512MB

image.png

                           

二、Redis命令

     1.键值对

      相当于字典的key和value,支持简单的增删改查操作。下面代码中的“name”就是字典的key,而value就是字符串"zhangsan"。

  1. > set name zhangsan
  2. OK
  3. > get name
  4. "zhangsan"
  5. > exists name
  6. (integer) 1
  7. > del name
  8. (integer) 1
  9. > get name
  10. (nil)

 

2.批量键值对

可以对多个字符串进行批量读写,节省网络耗时开销

  1. > mset name1 zhangsan name2 lisi name3 wanger
  2. OK
  3. > mget name1 name2 name3 # 返回的是一个列表
  4. 1) "zhangsan"
  5. 2) "lisi"
  6. 3) "wanger"
  7. > mget name1 name2 name3 name4
  8. 1) "zhangsan"
  9. 2) "lisi"
  10. 3) "wanger"
  11. 4) (nil)

 

3.过期和set命令拓展

可以对key设置过期时间,到时间会被自动删除,这个功能常用来设置缓存的失效时间。

  1. > set name zhangsan
  2. OK
  3. > get name
  4. "zhangsan"
  5. > expire name 5 # 5s 后过期
  6. (integer) 1
  7. ... # 等5s
  8. > get name
  9. (nil)
  10. > setex name 5 zhangsan # 5s后过期,等价于set+expire
  11. OK
  12. > get name
  13. "zhangsan"
  14. ... # 等5s
  15. > get name
  16. (nil)
  17. > setnx name zhangsan # 如果name不存在就执行set创建
  18. (integer) 1
  19. > setnx name lisi
  20. (integer) 0 # name已经存在,不会set成功
  21. > get name
  22. "zhangsan" # 没有改变

 

4.计数

如果value值是一个整数,可以对它进行自增操作。自增是有范围的,它的范围在signed long的最大值和最小值之间,超出这个范围Redis会报错。

  1. > set age 18
  2. OK
  3. > incr age
  4. (integer) 19
  5. > incrby age 10
  6. (integer) 29
  7. > incrby age -5 #相当于减5
  8. (integer) 24

三、使用场景

     字符串结构使用非常广泛,一个常见的用途就是缓存用户信息。我们可以将用户信息结构序列化为JSON字符串,然后将字符串放到Redis来缓存,同样取用户信息时经过一次反序列化的过程

 

 

 

 

END

 

如有收获,请帮忙转发,您的鼓励是作者最大的动力,谢谢!

 

一大波微服务、分布式、高并发、高可用原创系列文章正在路上,欢迎扫描下方二维码,持续关注:

 

 

qrcode_for_gh_fa294c4487f9_430 (3).jpg

文玥公子

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/402109
推荐阅读
相关标签
  

闽ICP备14008679号