文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

【Redis】入门

2019-10-29 22:11

关注

【Redis】入门

Redis是一个开源的、基于内存的数据结构存储器,可以用作数据库、缓存和消息中间件 Redis最常用的功能 缓存 分布式锁
  1. Redis概述
  2. Redis常用数据结构
  3. Redis删除过期数据策略
  4. Redis内存淘汰机制
  5. Redis持久化机制
  6. 缓存问题及解决方案

Redis概述

 Redis是一个开源的、基于内存的数据结构存储器,可以用作数据库、缓存和消息中间件

Redis最常用的功能

 本文介绍使用环境 如何安装Redis就不做介绍,若不想安装Redis环境,可以使用try redis尝试Redis功能 CMD 启动 Redis,打开Reids目录,执行下面命令,出现下面图片代表启动成功
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删除过期数据有两种机制

定期删除 :redis默认是每隔 100ms 就随机抽取过期的数据删除

惰性删除 : 访问数据的时候检查数据是否过期

 

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

参考文章

Command reference – Redis

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯