Redis速成
MySQL是关系型数据库,其涉及硬盘读写操作,当并发量大且读写频繁时,速度会变慢;
Redis是内存数据库,内存的读写速度远快于硬盘,由此学习了解一下Redis
基本操作
Redis中的数据以键值形式存储,默认情况下,连接的是0号数据库,默认总共有16个,我们可以通过对应的配置文件进行修改。
切换数据库
select 序号
添加数据
set key value -- 一次性设置多个 mset key1 value1 key2 value2 ...
获取数据
get key
设置过期时间
set key value ex 秒数 set key value px 毫秒数
单独设置过期时间
expire key 秒数
查看剩余的过期时间
ttl key -- 查看秒 pttl key -- 查看毫秒 persist key -- 转换为永久 (显示 -1 即为永久)
删除数据
del key
查看所有的键
keys *
查询是否存在对应的键
exists key
随机取出某一个键
randomkey
将一数据库数据移到另一数据库中
move key 数据库序号
修改键
rename key newkey renamex key newkey -- 会判断新键是否存在,不存在再更名
运算
incr key -- 对应的value若为数字会自增1 incrby key x -- 对应的value若为数字会加 x decr key -- 自减 decrby key x -- 减去 x
查看键的类型
type key
数据类型
String
参考基本操作
Hash
类似Java中Map<String, Map<String, String>>
即Redis中对应的value是个Map<String, String>
设置数据
hset key 字段 值
获取数据
-- 获取相应字段对应的值 hget key 字段 -- 获取所有字段和值 hgetall key -- 获取所有字段 hkeys key -- 获取所有字段对应的值 hvals key
是否存在相应的字段
hexists key 字段
删除相应的字段
hdel key 字段
查看一共多少键值对
hlen key
List
添加数据
-- 从头部添加 lpush key element -- 从尾部添加 rpush key element -- 在指定元素前/后插入元素 linsert key before/after 指定元素 element
获取数据
-- 根据下标获取元素 lindex key 下标 -- 获取并移除头部元素 lpop key -- 获取并移除尾部元素 rpop key -- 获取指定范围内的 lrange key start end lrange key 0 -1 -- 获取全部元素(-1表示倒数第一个元素)
移动并获取
-- 从当前数组尾部取出放到目标数组的头部中,并返回元素 rpoplpush 当前数组 目标数组
支持阻塞操作,类似生产者、消费者
blpop key timeout -- 若列表中无元素则等待,timeout为超时时间限制,若等待期间有元素则会马上获取
Set
添加元素
sadd key value1,value2...
查看set中有多少个值
scard key
判断集合中是否包含指定值
sismember key value -- 是否包含指定值 smembers key -- 列出所有值
相关运算
sdiff key1 key2 -- 集合之间的差集 sdiffstore 目标 key1 key2 -- 差集存到目标集合中 sinter key1 key2 -- 交集 sintersotre 目标 key1 key2 -- 交集存到目标集合中 sunion key1 key2 -- 并集 sunionsotre 目标 key1 key2 -- 并集存到目标集合中
移动指定值
smove 原key 目标key value
移除操作
-- 随机移除 spop key -- 移除制定 srem key value
SortedSet
为每个值设定一个分数,分数大小决定值的位置,从而使其有序
添加数据
zadd key value score -- score分数决定值的位置
查询
zcard key -- 查看有多少个值 -- 通过分数段查看 zrangebyscore key start end [withscores][limit] -- 统计分数段内的数量 zcount key start end -- 根据分数获取指定值的排名 zrank key value
移除
zrem key value
获取区间内所有
zrange key start end
持久化
RDB(Redis DataBase)
当开启了RDB持久化机制后,在一定的时间间隔内,Redis会将内存中的数据保存在一个文件中。这个文件可以看作是Redis的“快照”,其中包含了某个时间点上Redis的所有数据。RDB的优点在于它是一个非常紧凑的表示,同时因为在恢复期间需要加载并解析一个单独的文件,所以速度也很快。
优点:加载速度快,数据体积小
缺点:存储速度慢,消耗资源多,会发生数据丢失
AOF(Append-Only File)
当开启了AOF持久化机制后,Redis会将每个写入的命令都追加到一个文件中。这意味着当Redis重新启动时,可以从上一次写入命令的位置开始重放命令确保数据的准确性。AOF的优点在于它可以提供粒度更细的持久化,因此可以避免在恢复时丢失太多数据。缺点在于它的文件通常比RDB生成的文件大,其速度会慢于RDB。
优点:存储速度快,消耗资源少,支持实时存储
缺点:加载速度慢,数据体积大
事务和锁
开启事务:multi
执行事务:exec
中途取消事务:discard