Redis的五种基础数据结构之String

Redis有5种基础数据结构,分别为 string(字符串)、list(列表)、hash(字典)、set(集合)和zset(有序集合)。这五种基本数据结构的熟练使用,是Redis的相关知识中最基础、最重要的部分

string

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

Redis的字符串是动态字符串,是可以修改的字符串,内部结构的实现类似于Java的ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配。即: 为当前字符串分配的实际空间 一般要高于实际字符串长度。

当字符串小于1MB时,扩容都是加倍现有的空间。如果字符串长度超过1MB,扩容时一次只会多扩1MB的空间。需要注意的是字符串最大长度为512MB

【键值对】

D:\Program Files\Redis>redis-cli.exe -h 127.0.0.1 -p 6379
127.0.0.1:6379> set name "helloworld"
OK
127.0.0.1:6379> get name
"helloworld"
127.0.0.1:6379> exists name
(integer) 1
127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> get name
(nil)

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

127.0.0.1:6379> mset name1 boy name2 girl name3 unkown
OK
127.0.0.1:6379> mget name1 name2 name3
1) "boy"
2) "girl"
3) "unkown"

【过期和set命令拓展】
可以对key设置过期时间,到时间会被自动删除。这个功能常用来控制缓存的实效时间。这里只简单说下,后面章节再深入了解

127.0.0.1:6379> expire name1 5 #5s后过期
(integer) 1
127.0.0.1:6379> setex name 5 codehole   #5s后过期 等价于set+expire
OK
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> setnx name codehole  #如果name不存在,则执行set创建
(integer) 1
127.0.0.1:6379> setnx name holycoder  #如果name已经存在,则不执行操作
(integer) 0
127.0.0.1:6379> get name
"codehole"                           #没有改变

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

127.0.0.1:6379> set age 30
OK
127.0.0.1:6379> incr age
(integer) 31
127.0.0.1:6379> incrby age 5
(integer) 36
127.0.0.1:6379> incrby age -1
(integer) 35
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值