redis概述
redis最常用的功能
windows 10
redis 3.0.504
redis-server redis.windows.conf
redis常用数据结构
字符串(string)
用途
常用命令 | 用途 |
---|---|
set key value | 设置指定 key 的值 |
get key | 获取指定key的值 |
decr key | 将指定的key的值递减1,若设置的值不是数字,报错 |
incr key | 将指定的key的值递增1,若设置的值不是数字,报错 |
mget key1 [key2] | 获取指定的key,返回多个值 |
哈希(hash)
用途
常用命令 | 用途 |
---|---|
hset key field value | 设置单个对象值 |
hget key field value | 获取的那个对象值 |
hmset key field1 value [field2 value2] | 设置对象多个字段值 |
hmget | 获取对象多个值 , 返回列表 |
hgetall | 获取指定key对象字段和值 |
列表(list)
用途
常用命令 | 用途 |
---|---|
lpush key value | 向链表左边推送值 |
rpush key value | 向链表右边推送值 |
lpop key | 链表的左边弹出值 |
rpop key | 链表的右边弹出值 |
lrange key start end | 链表左边指定范围内的元素 , 多用于分页 |
llen key | 获取链表长度 |
集合(set)
用途
常用命令 | 用途 |
---|---|
sadd key value | 添加一个元素 |
spop key value | 随机返回一个元素 |
smembers key | 返回集合所有成员 |
sunion key1 key2 | 返回所有给定集合的并集 |
有序集合(sorted set)
用途
常用命令 | 用途 |
---|---|
zadd key score1 member1 [score2 member2] | 向有序集合添加一个或多个成员,或者更新已存在成员的分数 |
zrange key start end | 返回有序集合指定范围数据 |
zrem key member | 移除指定成员 |
zcard key | 获取集合成员数 |
redis删除过期数据策略
redis删除过期数据有两种机制
1. 定期删除 :redis默认是每隔 100ms 就随机抽取过期的数据删除
2. 惰性删除 : 访问数据的时候检查数据是否过期
redis内存淘汰机制
当遇到写入数据的时候内存不够,redis有下面几种机制来决定如何操作
方式 | 说明 |
---|---|
volatile-lru | 从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰 |
volatile-ttl | 从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰 |
volatile-random | 从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰 |
allkeys-lru | 当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的key |
allkeys-random | 从数据集(server.db[i].dict)中任意选择数据淘汰 |
noeviction | 禁止删除,若超出内存报错 |
volatile-lfu | 从已设置过期时间的数据集挑选使用频率最低的数据淘汰(redis5.0 以后才有) |
allkeys-lfu | 从数据集中挑选使用频率最低的数据淘汰(redis5.0 以后才有) |
在配置文件里面打开maxmemory-policy配置项,默认是:noeviction
通常情况配合maxmemory配置设置最大内存使用
redis持久化机制
redis支持两种持久化方式
快照(snapshotting)持久化(rdb)
aof(append-only file)持久化
aof有3种方式
方式 | 说明 |
---|---|
appendfsync always | 每次有数据修改发生时都会写入aof文件 ,严重降低redis的速度 |
appendfsync everysec | 每秒钟同步一次,显示地将多个写命令同步到硬盘 |
appendfsync no | 让操作系统决定何时进行同步 |
为了兼顾数据和写入性能,用户可以考虑 appendfsync everysec 选项 ,让 redis 每秒同步一次 aof 文件,redis 性能几乎没受到任何影响。
redies默认aof是关闭的,通过修改配置打开
redis 4.0 对于持久化机制的优化
redis 4.0 开始支持 rdb 和 aof 的混合持久化(默认关闭,可以通过配置项 aof-use-rdb-preamble 开启)。
如果把混合持久化打开,aof 重写的时候就直接把 rdb 的内容写到 aof 文件开头。
这样做的好处是可以结合 rdb 和 aof 的优点, 快速加载同时避免丢失过多的数据。
当然缺点也是有的,aof 里面的 rdb 部分是压缩格式不再是 aof 格式,可读性较差。
由于windows的版本最新只有3.0,这个就没法验证
缓存问题及解决方案
缓存雪崩
同一时间大面积缓存失效,大量请求落到数据库上
解决
缓存穿透
请求缓存不存在的数据,然请求穿透缓存到数据库,通常是黑客攻击
解决
缓存击穿
缓存过期的一刻,同时有大量的请求,由于缓存失效,导致请求都落到db
解决
转发请标明出处:https://www.cnblogs.com/wilsonpan/p/12635605.html
如对本文有疑问, 点击进行留言回复!!
修复 Mac brew 安装 mongodb 报 Error: No available formula with the name ‘mongodb’ 问题详解
MongoDB中数据的替换方法实现类Replace()函数功能详解
网友评论