Redis基本数据类型操作
Redis基本数据类型操作
使用建议
- 优雅的停止应该是
./redis-server shutdown
, 这样redis会将当前的快照备份到rdb的文件当中 - redis中一般只会用到0号库,分布式情况下,只会同步到0号库
全局命令
命令 | 功能 | 备注 |
---|---|---|
keys aa* |
模糊搜索所有关键字 *为通配符 | 生产环境一般禁止使用, 数据量较大的情况会阻塞redis使用 |
dbsize |
查看当前redis中key的数量 | redis中每插入一个key, 计数器+1,性能较好 |
EXISTS aaa |
精确匹配当前key是否存在 | |
del aaa |
删除一个key | |
set aaa(key) 999(value) |
插入一个键值对, 默认没有过期时间 | 如果不设置过期时间,会大量占用redis的内存使用。如果当前key已经设置了过期时间,重新set的话没有指定过期时间,会将原有的过期时间覆盖,变为-1 永不过期的key |
get aaa |
获取一个key的value | |
EXPIRE aaa(key) 18(过期时间) |
设置key的过期时间 | 不能对set list集合内的元素单独设置过期时间 |
ttl aaa |
查看当前key的剩余过期时间 | 正数:剩余过期时间 0:刚好过期 -1:没有过期时间 -2:不存在当前的key |
PEXPIRE aaa |
设置key的过期时间,精确到毫秒 | 不能对set list集合内的元素单独设置过期时间 |
EXPIREAT aaa 1000(时间戳) |
在某个时间过期 | 不能对set list集合内的元素单独设置过期时间 |
type aaa |
查看key的数据类型 | |
rename aaa bbb |
重命名一个key的名字 | 如果重命名的key已经存在了, 会将当前的key删除, 然后将存在的key的value赋值到新的key的value当中。 比如: aaa = 1 bbb =2, rename bbb aaa, 此时bbb的值为1 |
renamenx aa bbb |
重命名一个key的名字 | 如果重命名后的的key已经存在, 会返回0, 代表修改失败 |
randomkey |
随机返回一个已存在的key |
String类型
Redis 是标准的C写的, C语言中的
String
类型是char
数组(char[]
), 在Redis中并没有直接使用C的String类型, 是自己实现的操作Redis中的字符串不要太大, 尽量小于
512M
命令 | 功能 | 备注 |
---|---|---|
setnx aa 333 |
不存在就创建 | 一般用在分布式锁中 |
setxx aa bb |
存在就覆盖当前的值 | 高版本中已经删除这个命令了 |
set key value nx |
不存在就创建一个键值对, 如果已经存在, 返回nil |
和setnx 类似 |
set key value xx |
存在就覆盖当前的值, 如果不存在返回nil |
和setxx 命令类似 |
set aaa(key) 999(value) |
插入一个键值对, 默认没有过期时间 | 如果不设置过期时间,会大量占用redis的内存使用。如果当前key已经设置了过期时间,重新set的话没有指定过期时间,会将原有的过期时间覆盖,变为-1 永不过期的key |
get aaa |
获取一个key的value | |
EXPIRE aaa(key) 18(过期时间) |
设置key的过期时间 | 不能对set list集合内的元素单独设置过期时间 |
ttl aaa |
查看当前key的剩余过期时间 | 正数:剩余过期时间 0:刚好过期 -1:没有过期时间 -2:不存在当前的key |
PEXPIRE aaa |
设置key的过期时间,精确到毫秒 | 不能对set list集合内的元素单独设置过期时间 |
EXPIREAT aaa 1000(时间戳) |
在某个时间过期 | 不能对set list集合内的元素单独设置过期时间 |
type aaa |
查看key的数据类型 | |
rename aaa bbb |
重命名一个key的名字 | 如果重命名的key已经存在了, 会将当前的key删除, 然后将存在的key的value赋值到新的key的value当中。 比如: aaa = 1 bbb =2, rename bbb aaa, 此时bbb的值为1 |
renamenx aa bbb |
重命名一个key的名字 | 如果重命名后的的key已经存在, 会返回0, 代表修改失败 |
randomkey |
随机返回一个已存在的key | |
mset key 1 key2 2 key3 3 |
批量插入 | |
mget key key1 key2 |
批量获取 | |
incr key |
自增1 | |
incrby key 3 |
指定自增长度 | |
incrbyfloat key 0.5 |
自增浮点数操作 | |
decr key |
自减1 | |
append key aa |
在已有的key的value追加一个字符串 | 比如key = 111, 使用append后, 值为111aa |
setrange key 5 x |
在key的value中, 第五个值设置为某个值 | 如果设置的位置的值不存在, 则会在设置的位置之前的空位上补齐一个空的字符串 |
getrange key 1 3 |
获取key的1-3位置的字符串信息 |
Hash类型
redis中的hash类型可以大致理解为是Map<String, Map<String, Object>> 结构
命令 | 功能 | 备注 |
---|---|---|
hset key field value |
key是redis的key, filed是value中的key, value是value中key的value | |
hsetnx key field value |
设置value中指定field的值, 如果存在则不覆盖 | |
hget key filed |
获取key的value中的filed的value | |
hmset key filed1 value1 filed2 value2 |
批量设置value中的键值对 | |
hdel key filed1 |
删除value中指定的key | |
hmget key filed1 filed2 |
批量获取value中的key对应的值 | |
hexists key filed |
判断value中对应的key是否存在 | 存在返回1, 不存在返回0 |
hkeys key |
获取value中所有的key | |
hgetall key |
返回value中的所有的值 | 以键值对的方式返回 |
hincrby key filed |
对value中的key的值进行自增1 | |
hdecrby key filed |
对value中的key的值进行自减1 | |
hincrby key filed 3 |
对value中key的值进行指定步长的自增 | |
hdecrby key filed 3 |
对value中的key的值进行指定步长的自减 | |
hincrbyfloat key field 0.5 |
对value中的key进行浮点数的自增 | |
hdecrbyfloat key field 0.5 |
对value中的key进行浮点数的自减 | |
hlen key |
获取value中的map的key的数量 |