目录
一、简单介绍
学习参考
https://blog.csdn.net/liqingtx/article/details/60330555
https://www.runoob.com/redis/redis-keys.html
redis 是C语言编写的、支持网络交互的、可基于内存也可持久化,key:value的存储系统,其中value支持五种数据类型
字符串(strings)、字符串列表(lists)、字符串集合(sets)、有序字符串集合(sorted sets)、哈希(hashes)
二、key 常用命令
命令 | 描述 | 用法 | 成功 | 失败 | 备注 | |
set | 创建key | set key1 123 | OK | 创建已经存在的key,会覆盖前者 | ||
setnx | 创建key且在当前的keyname不存在时 | setnx key1 123 | 1 | 0 | ||
setex | 创建key,且设置过期时间(秒) | setex key1 10 123 | OK | 创建已经存在的key,会覆盖前者 | ||
psetex | 创建key,且设置过期时间(毫秒) | psetex key1 1000 123 | OK | |||
mset | 创建多个key | mset key1 123 key2 456 | OK | |||
msetnx | 创建多个key,且当前key不存在时 | msetnx key1 123 key2 456 | 1 | 0 | ||
get | 返回key的value | get key1 | value | nil | ||
mget | 返回多个key的value | mget key1 key2 | 多个value | nil | ||
del | 删除key | del key1 | 1 | 0 | ||
exists | 检查是否存在该key | exists key1 | 1 | 0 | ||
keys | 查找符合条件的key | keys key1/keys key*/keys * | key name | 名字后加*,符合*前的名字都进行搜素 | ||
rename | 修改key名 | rename key1 key2 | OK | no such key | 修改已经存在key,会将已存在的进行覆盖 | |
renamenx | 修改key名,仅当新key名不存在时 | renamenx key1 key2 | 1 | 0 | ||
expire | 设置key过期时间(秒) | expire key1 10 | 1 | 0 | ||
pexpire | 设置key过期时间(毫秒) | perpire key1 1000 | 1 | 0 | ||
expireat | 设置key过期时间(时间戳) | expireat key1 1293810000 | 1 | 0 | ||
persist | 移除key过期时间 | persist key1 | 1 | 0 | ||
TTL | 返回key过期剩余时间(秒) | ttl key1 | 剩余秒数 | -1 | ||
PTTL | 返回key过期剩余时间(毫秒) | pttl key1 | 剩余毫秒数 | -1 | ||
dump | 序列化key | dump key1 | 序列化的值 | nil | ||
scan | 迭代key | scan 0 | 输出keyname | |||
move | 将key移动到另一个数据库 | move key1 1 | 1 | 0 | 另外的库存在相同的key会失败, select 1,移动到相应的库,0 代表最初的这个 |
三、字符串(strings)
- 数据最大存储量
- 512MB
- 数值计算最大范围( java中的long的最大值)
- 9223372036854775807
命令 | 描述 | 例子 | 成功 | 失败 | 备注 |
getrange | 字符串截取,下标0开始 | getrange key1 2 3 | 返回下标2到3 的内容 | 返回空字符串 | |
setrange | 替换到字符串,从某个下标开始后的内容 | setrange key1 2 "xxx" | 返回替换后的字符串长度 | 超出长度的自动补位空格 | |
append | 在原字符串后面拼接内容 | append key1 "xxx" | 返回拼接的长度 | 不存在的key,将创建并设置key-value | |
strlen | 返回字符串长度 | strlen key1 | 返回长度 | 0 | |
incr | 将存储的数字+1 | incr key1 | 返回添加后的数字 | 非数字报错,带小数点报错 | |
incrby | 将存储的数字,按指定的数字添加 | incrby key1 2 | 返回添加后的数字 | 非数字报错,带小数点报错 | |
incrbyfloat | 将存储的数字,按指定的浮点型数字添加 | incrbyfloat key1 0.5 | 返回添加后的数字 | 整数报错 | |
decr | 将存储的数字-1 | decr key1 | 返回相减后的数字 | ||
decrby | 将存储的数字,按指定的相减 | decrby key1 2 | 返回相减后的数字 |
四、字符串列表(lists)
底层数据结构为双向链表,插入快,查询快,操作类似于栈
最大存储232个vlaue
命令 | 描述 | 例子 | 成功 | 失败 | 备注 |
Lpush | 向左边头部添加一个或多个值 | lpush ll 123 456 | 返回长度 | ||
Rpushx | 向已存在的Key,左边头部添加一个或多个值 | lpushx ll 123 456 | 返回长度 | 0 | |
Rpush | 向右边尾部添加一个或多个值 | rpush ll 123 456 | 返回长度 | ||
Rpushx | 向已存在的Key,右边尾部添加一个或多个值 | rpushx ll 123 456 | 返回长度 | 0 | |
lset | 指定list索引修改 | lset ll 0 123 | OK | ||
Lpop | 移除掉左边第一个元素,并且返回 | lpop ll | 原list的第一个元素 | nil | |
Rpop | 移除掉右边尾部第一个元素,并且返回 | rpop ll | 原list的最后一个元素 | nil | |
Blpop | 设置时间(秒),移除掉左边第一个元素,并且返回key和该元素 | blpop ll 5 | key和元素 | 设置5秒内没有结果,则返回 nil和时间 | |
Lindex | 通过索引查询元素 | lindex ll 0 | 元素 | ||
llen | 返回list长度 | llen ll | 返回长度 | ||
ltrim | 指定区间保留元素,其它的移除 | ltrim ll 0 1 | OK |
五、字符串集合(sets)
底层是一个无序的集合
命令 | 描述 | 例子 | 成功 | 失败 | 备注 |
sadd | 添加一个或多个元素 | sadd set 11 22 | 返回长度 | 相同的key会覆盖 | |
smembers | 返回全部的元素 | smembers set | 全部元素 | ||
sismember | 判断元素存在 | sismember set 11 | 1 | 0 | |
scard | 获取集合长度 | scard set | 返回长度 | ||
spop | 随机移除一个元素 | spop set | 返回移除元素 | nil | |
srem | 移除一个或多个成员 | srem set 11 22 | 返回移除数量 | ||
sscan | 迭代元素 | sscan set | 返回全部元素 |
六、有序字符串集合(sorted sets)
有序集合,每个元素带有一个score进行定位
七、哈希(hashes)
一种键值对结构,相当于key-value 再套一层keyValue
hash 可以存储 232 - 1 个键值对
命令 | 描述 | 例子 | 成功 | 失败 | 备注 |
Hset | 设置hset | hset hkey1 cc 123 | 1 | 0 | 设置已经存在的field,会覆盖前者 |
Hsetnx | 设置hset,在当前fi字段不存在下 | hsetnx hkey1 cc 123 | 1 | 0 | |
Hmset | 一次设置多个字段 | Hmset hkey1 cc 123 bb 456 | OK | ||
Hget | 获取hkey的字段的值 | hget hkey1 cc | 输出单个值 | nil | |
Hgetall | 获取hkey的所有字段和值 | hgetall hkey1 | 输出全部字段和值 | ||
Hmget | 获取多个字段值 | hmget hkey1 cc bb | 输出多个值 | nil | |
Hkeys | 获取hkey的字段 | hkeys hkey1 | 输出全部的字段 | ||
Hvals | 获取hkey的所有值 | hvals hkey1 | 输出全部的值 | ||
Hscan | 迭代hkey所有字段和值 | hscan hkey1 0 | 输出全部字段和值 | ||
Hlen | 获取hash字段数量 | hlen hkey1 | 数量 | ||
Hincrby | 对字段的进行相加,按指定的整数 | hincrby hkey1 cc 2 | 返回相加后的 | ||
Hincrbyfloat | 对字段的进行相加,按指定的小数 | hincrbyfloat hkey1 cc 0.4 | 返回相加后的 |