Redis常见数据结构
基本介绍
Redis是一个在内存中存储数据的中间件,可作为数据库,缓存,消息队列等。
特点:
持久化:Redis会把数据存储在内存中,内存的数据是易失的,进程退出和重启都会使内存中的数据丢失,Redis会把数据存储在硬盘上进行备份,重启后Redis会重新加载硬盘中的备份数据,使Redis的内存恢复到重启前的状态。
支持集群:引入多个主机部署多个Redis节点,每个节点可以存储数据的一部分。
高可用:Redis自身支持主从结构,从节点相当于主节点的备份。
快速:Redis数据在内存中,读写的速度远远快于MySQL(数据存储在硬盘中)。Redis的核心功能都是比较简单的逻辑,不支持一些复杂的查询。Redis使用epoll的I/O多路复用的方式(使用一个线程管理多个Socket)。Redis是单线程模型,减少了不必要线程之间的竞争开销。
基本类型:Redis基于键值对存储数据,类似于哈希表,使用<key,value>的形式存储数据,key的类型固定为字符串类型,value可以支持多种类型:String(字符串),hash(哈希),set(集合),zset(有序集合),list(链表)。
全局命令
redis -cli 本机登录
keys [patter] 查询匹配的key
type key 查看对应的value类型
ttl key 查看过期剩余时间
exists key 查看key是否存在
del ke 删除key
scan cursor(光标 指向当前遍历位置) count(每次获取元素个数) 渐进遍历
数据类型:
String
set key value 设置value
get key 获取value
set key value ex 设置key和value,加上过期时间
set key value nx|xx nx:key不存在时设置值 xx:存在时设置
mset key vslue 一次设置多个key
mget 一次获取多个key对应的value
incr key 对应key的value+1
incrby key 对应key的value+n
decr key 对应key的value -1
decrby key 对应key的value -n
incrbyfloat key 针对小数的加减
append key value 拼接字符串
getrange key start end 获取指定范围字符串
setrange key offset value 从指定位置开始替换字符
strlen 获取字符串长度
Hash
hset key field value [field vlaue ...] 设置key中的 fleld value
hget key field 获取key对应的field
hexists key field 判断hash中key对应的field是否存在
hdel key field [field] 删除hash对应的key中field字段
hkeys key 获取key中的所有faild字段
hvals key 获取hash中的所有value
hgetall key 获取hash中的所有字段和value
hmget key field [field..] 一次查询多个field
hset nx key field key 设置值,不存在设置成功
hincrby key field n 对应faild的value加减n
hincrbyfloat key field n 加减小数
hstrlen key field 计算value的字符串长度
hlen key 获取哈希元素个数
List
lpush key element [element...] 左侧插入元素
lpushx key element [element] 存在元素则插入元素,不存在直接返回
rpush key element [element] 右侧插入元素
rpushx key element [element] 存在元素则插入元素,不存在直接返回
lrange key start stop 指定范围查看list
lpop key 左侧取出元素
rpop key 右侧取出元素
lindex key index 获取从左开始index元素位置
linsert key before | after pivot element 指定位置前后插入元素
llen key 获取元素个数
lrem key count element 删除指定个数的元素
ltrim key start stop 删除指定范围外元素
lset key index element 根据下标修改元素
blpop和brpop 带有阻塞的插入元素
blpop key[key...] timeout 带有超时时间
lpush 和 rpop 结合类似数据结构中的栈
lpush 和 lpush 结合类似数据结构中的队列
Set
sadd key member [member...] 添加元素
smembers key 获取集合中所有元素
sismember key member 判断元素是否存在集合中
spop key [count] 随机删除元素
srandmember [count] 随机取出元素
smove source destination member 将member删除,插入到目标集合中
srem key member [member...] 删除元素一个或多个
sinter key [key...] 求集合交集
sinterstore destination key [key...] 计算交集,结果放入集合中
sunion key [key] 计算并集
sunionstore destination key[key...] 计算并集,结果放入集合中
sdiff key [key...] 计算差集
sdiffstore destination key [key...] 计算差集,结果放入集合中
Zset
zadd key [NX | XX] [GT | LT] [INCR] score member[member...] 添加元素
zrange start stop with scores 使用下标指定查询集合,带有分数
zcard key 获取元素个数
zcount key min max 返回分数在区间min和max之间
zrevrange key min max with scores 按照分数逆序打印
zrevrangebyscore key min max with scores 按照分数逆序打印,带有分数
zpopmax key count 删除并返回分数最高的count个元素
bzpopmax key [key...] timeout 带有超时时间的阻塞删除
zpopmin key count 删除有序集合中最小count个元素
bzpopmin key [key...] timeout 带有超时时间的阻塞删除
zrank key member 返回指定元素的排名
zrevrank key member 降序返回元素排名
zscore key member 更具member查找元素
zrem key member [member] 删除指定有序集合元素
zremrangebyrank key start stip 规定下标范围删除
zremrangebyscore key min max 根据分数区间进行删除
zincrby key increment member 对分数进行增加,保持集合升序
zinterstore destination numkeys key[key...] [weights weight[weight...]]
[aggregate <sum | min | max>] 交集
zunionstore destination numkeys key[key...] [weights weight[weight...]]
[aggregate <sum | min | max>] 并集