Redis的基本使用
基本操作
- 信息添加:
set key value,例如:set myname jerry - 信息查询:
get key,例如:get myname(如果不存在会返回nil) - 清除屏幕信息:
clear - 退出客户端
quitexitesc键 - 帮助命令:
help 命令名称help @组名(组名是string等)
数据类型
Redis五种常用数据类型:
- string
- hash
- list
- set
- sorted_set
string类型的使用
redis本身是一个Map,所有的数据都采用key:value的形式存储
数据类型指定value的类型,key永远为string类型
string类型也可以作为数字使用,但注意并不是数字
1. 基本操作:
- 添加数据:
set key value - 获取数据:
get key - 删除数据:
del key - 添加多个数据:
mset key value1 value2 ....,m是Multiple - 获取多个数据:
mget key1 key2 .... - 获取字符串长度:
strlen key - 追加信息到原始信息后面:
append key value,set会覆盖
如果选择单数据操作和多数据操作:
数据在发送时和响应时都需要时间,执行的时间是一样的。数据多的时候选择单数据多次发送会浪费发送和响应时间。
2. string类型数据的扩展操作:
string类型可以当作数字使用
假如存的string是一个纯数字:
数字加一:
incr key数字加指定数值:
incrby key increment,increment是指定的数字数字加指定的值并且可以是浮点数:
incrbyfloat key increment数字减少指定数值:
decr keydecyby key increment减浮点数可以用
incrbyfloat key 负数
如果原始数据不能转成数值,或超越了redis 数值上限范围,将报错。
数字最大值:9223372036854775807设置数据具有指定生命周期:
setex key seconds value毫秒级:
psetex key milliseconds value
注意事项:
- 返回值可以是成功或失败,分别为0, 1
- 也可使结果只0,1,2,3
- 数据未获取到:nil 等同于 null
- 数据最大存储了:512MB
- key的命名规范:
表明:主键:主键值:属性 - string可以存储json形式,但是不易修改
hash类型的使用
1. 基本介绍:
hash类型:底层使用哈希表结构实现数据存储
hash存储结构优化
- 如果field数量较少,存储结构优化为类数组结构
- 如果field数量较多,存储结构使用HashMap结构
2. 基本操作:
- 添加数据:
hset key field value - 获取数据:
hget key field - 获取所有数据:
hgetall key - 删除数据:
hdel key field1 [...] - 添加多个数据:
hmset key field1 value1 field2 value2 ..... - 获取多个数据:
hmget key field1 field2 ...... - 获取哈希表中字段数量:
hlen key - 获取哈希表中是否存在指定的字段:
hexists key field
3. 扩展操作:
- 获取哈希表中所有字段名:
hkeys key - 获取哈希表中所有字段值:
hvals key - 设置指定字段数值数据增加:
hincrby key field increment - 增加浮点数:
hincrbyfloat key field increment - 如果不存在添加:
hsetnx key field value,存在则不改
list类型的使用
1. 介绍:
数据存储需求:存储多个数据,并对数据进入存储空间的顺序进行区分
- 需要的存储结构:一个存储空间保存多个数据,且通过数据可以体现进入顺序
- list类型:保存多个数据,底层使用双向链表存储结构实现
- 因为是双向链表,所以有左右操作
2. 基本操作:
- 添加/修改数据:
lpush key value1 [value2] ..... - 添加/修改数据:
rpush key value1 [value2] ..... - 获取范围数据:
lrange key start stop - 获取指定位置的数据:
lindex key index - 获取list长度:
llen key - 获取并删除数据:
lpop keyrpop key
3. 扩展操作:
- 规定时间内获取并移除数据:
blpop key1 [key2] timeout brpop key1 [key2] timeout。- 说明,这个操作最多执行一次,如果有数据会直接弹出去,没有数据会在指定时间内等待,这段时间如果有数据进入,弹出即可。
- 指定时间内取出最后一个元素放入另一个list的头部:
brpoplpush source destination timeout - 移除指定数据:
lrem key count value,list是可以重复的,从左面数删除多少个此元素
set类型的使用
1. 基本介绍:
- 新的存储需求:存储大量的数据,在查询方面提供更高的效率
- 需要的存储结构:能够保存大量的数据,高效的内部存储机制,便于查询
- set类型:与hash存储结构完全相同,仅存储键,不存储值(nil),并且值是不允许重复的(hash的键不允许)
2. 基本操作:
- 添加数据:
sadd key member1 [member2] ... - 获取全部数据:
smembers key - 删除数据:
srem key member1 [member2] ... - 获取集合数据总量:
scard key - 判断集合中是否包含指定数据:
sismember key member
3. 扩展操作:
- 随机获取集合中指定数量的数据:
srandmember key [count] - 随机获取集合中的某个数据并将该数据移出集合:
spop key [count] - 求两个集合的交集:
sinter key1 [key2] - 求两个集合的并集:
sunion key1 [key2] - 求两个集合的差集:
sdiff key1 [key2] - 求两个集合的交集并存储到指定集合中:
sinterstore destination key1 [key2] - 求两个集合的并集并存储到指定集合中:
sunionstore destination key1 [key2] - 求两个集合的差集并存储到指定集合中:
sdiffstore destination key1 [key2] - 将指定数据从原始集合中移动到目标集合中:
move source destination member
sorted_set类型的使用
1. 基本介绍:
- 新的存储需求:数据排序有利于数据的有效展示,需要提供一种可以根据自身特征进行排序的方式
- 需要的存储结构:新的存储模型,可以保存可排序的数据
- sorted_set类型:在set的存储结构基础上添加可排序字段

2. 基本操作:
- 添加数据:
zadd key score1 member1 [score2 member2] - 获取指定部分的数据:
zrange key start stop [WITHSCORES] - 排序是按照从小到大,如果反着获取:
zrevrange key start stop [WITHSCORES] withscores展现权重- 删除数据:
zrem key member [member] .... - 按条件获取数据:
zrangebyscore key min max [WITHSCORES] [LIMIT] - 6是通过权重获取指定权重范围的数据,
limit和mysql的分页一个意思,两个参数偏移量和记录条数 - 反着获取:
zrevrangebyscore key max min [WITHSCORES] - 按照排序条件删除数据:
zremrangebyrank key start stop - 按照权重条件删除数据:
zremrangebyscore key min max - 获取集合数据总量:
zcard key - 通过权重获取集合数据数量:
zcount key min max - 交集并集操作:
zinterstore/zunionstore destination numkeys key [key] ..... destination是存到哪,numkeys是后面跟着几个集合
3. 扩展操作:
- 获取数据对应的索引(排名):
zrank key memberzrevrank key member - score值获取与修改:
zscore key memberzincrby key increment member - 获取当前系统时间:
time
版权声明:本文为weixin_43795939原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。