Redis 基本数据结构之String(字符串)
版本:
docker exec practiceRedis redis-server -v
Redis server v=6.0.8 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=75cef67090587c6
- redis的字符串是动态字符串,是可以修改的字符串。L类似Java的ArrayList
- 采用预分配冗余空间的方式减少内存频繁操作,指当前字符串的实际分配的空间是大于字符串的的len,当字符串空间大小小于1MB,扩容加倍原有空间大小,超过1MB ,扩容最多增加1MB。
- 字符串的最大空间是512MB
常见的redis操作命令
- set key value [EX seconds|PX milliseconds] [NX|XX] [KEEPTTL] 一次设置一个值
可选选项:- ex seconds:为键设置秒级别过期时间。
set mykey keyvalue EX 5 - px milliseconds:为键设置毫秒级别过期时间。
set mykey keyvalue PX 5 - nx:键必须不存在,才可以设置成功,用于添加。
set mykey keyvalue nx - xx:于nx相反,键必须存在,才可以设置成功,用于更新。
set mykey keyvalue xx - keepttl:取消键的过期时间。
set mykey keyvalue keepttl
- ex seconds:为键设置秒级别过期时间。
- mset key value [key value …] 一次设置多个值
127.0.0.1:6379> Mset key1 value1 key2 value2
OK
- get key /mget key1 key2 获取值
127.0.0.1:6379> get key1
"value1"
127.0.0.1:6379> mget key1 key2
1) "value1"
2) "value2"
- del key 删除
#KEYS * #查询所有的key
127.0.0.1:6379> KEYS *
1) "key2"
2) "key1"
3) "mykey"
4) "backup1"
5) "backup3"
6) "backup4"
7) "backup2"
127.0.0.1:6379> del mykey
(integer) 1
127.0.0.1:6379>
- 计数
可以自增长,范围是long的范围(有符号的),超出会报错
127.0.0.1:6379> set age 11
OK
127.0.0.1:6379> INCR age #加一
(integer) 12
127.0.0.1:6379> INCR age -1 #错误
(error) ERR wrong number of arguments for 'incr' command
127.0.0.1:6379> INCRby age -1 #减一
(integer) 11
127.0.0.1:6379> set longMax 9223372036854775807
OK
127.0.0.1:6379> INCR longMax #最大值后再加报错
(error) ERR increment or decrement would overflow
- 其他
127.0.0.1:6379> EXPIRE key1 5 # 5s 过期
(integer) 1
127.0.0.1:6379> get key1
(nil)
127.0.0.1:6379> keys *
1) "key2"
2) "backup1"
3) "backup3"
4) "backup4"
5) "backup2"
127.0.0.1:6379> setex key3 5 value3 #设置5s 后过期
OK
127.0.0.1:6379> get key3
"value3"
127.0.0.1:6379> get key3
(nil)
127.0.0.1:6379> setnx key1 v1 # 不存在key1 就设置
(integer) 1
127.0.0.1:6379> get key1
"v1"
127.0.0.1:6379> ttl key3 #查询key3过期时间 ,不存在返回2
(integer) -2
127.0.0.1:6379> ttl key1 #没有设置返回-1
(integer) -1
127.0.0.1:6379> EXPIRE key1 5
(integer) 1
127.0.0.1:6379> ttl key1
(integer) 3
127.0.0.1:6379> ttl key1
(integer) -2
127.0.0.1:6379>