`

redis常用命令

 
阅读更多

敲代码这么久,redis也用的比较多了,把自己平常知道的知识点记录一下,方便以后查看。

一、redis配置,持久化、内存满了之后的策略、超时时间等等,都是可配置的。

二、Redis的持久化存储提供两种方式:Snapshot(RDB)与Append-only file(AOF)。RDB是默认配置。AOF需要手动开启。 

现在Redis的配置中默认是关闭AOF模式的。 

如果要开启AOF模式,修改Redis的配置文件redis.conf。

 

三、redis绝大部分操作基于内存,类似hashmap查找和操作时间复杂度都是O(1);数据结构专门设计,简单。采用单线程,避免不必要的上下文切换和竞争。使用多路I/O复用模型,非阻塞IO。redis最可能瓶颈的地方是内存或网络带宽,而不是CPU。虽然redis处理请求是单线程,但持久化等操作是fork出子线程或子进程处理的。

单进程多线程模型:mysql、memcached、oracle(windows版本);

多线程模型:orcle(linux版本)

nginx两类进程:一类是master进程(管理进程),一类是worker进程(工作进程),启动方式可分为单进程启动(一个进程,既是master又是worker)、多进程启动(仅有一个master,至少一个worker)。其中,master主要进行一些全局性的初始化工作和管理worker的工作,事件都是在worker中处理。

 

 

1、连接

#切换到redis目录下运行 
redis-cli.exe -h 127.0.0.1 -p 6379

 2、查询内存占用等信息

info
info cpu
info commandstats
...

 

 3、查询key,模糊匹配。众所周知,当redis中key数量越大,keys 命令执行越慢,而且最重要的会阻塞服务器,对单线程的redis来说,简直是灾难,终于找到了替代命令scan

scan 0
scan 0 count 100
scan 0 match liugangxin* count 100

 4、查看慢日志

SLOWLOG GET  
1) 1) (integer) 4               # 日志的唯一标识符(uid)  
   2) (integer) 1378781447      # 命令执行时的 UNIX 时间戳  
   3) (integer) 13              # 命令执行的时长,以微秒计算  
   4) 1) "SET"                  # 命令以及命令参数  
      2) "database"  
      3) "Redis"  

 

 四、管道技术

Reids是一个cs模式的Tcp服务,类似于http的请求。 当客户端发送一个请求时,服务器处理之后会将结果通过响应报文返回给客户端 。  
那么当需要发送多个请求时,难道每次都要等待请求响应,再发送下一个请求吗?难道请求之后必须阻塞等待返回值?
当然不是,这里就可以采用Redis的管道技术。  
举个例子,如果说jedis是:request response,request response,…;  
那么pipeline则是:request request… response response的方式。

所以,管道比较适合用来做批量操作。注意:管道(pipeline)是打包命令发送,redis必须在处理完所有命令前先缓存起所有命令的处理结果。打包的命令越多,缓存消耗内存也越多。即可以一次性发送多条命令并在执行完后一次性将结果返回,pipeline通过减少客户端与redis的通信次数来实现降低往返延时时间,而且Pipeline 实现的原理是队列,而队列的原理是时先进先出,这样就保证数据的顺序性。

       管道(Pipelining) VS 脚本(Scripting):

  大量 pipeline 应用场景可通过 Redis 脚本(Redis 版本 >= 2.6)得到更高效的处理,后者在服务器端执行大量工作。脚本的一大优势是可通过最小的延迟读写数据,让读、计算、写等操作变得非常快(pipeline 在这种情况下不能使用,因为客户端在写命令前需要读命令返回的结果)。

  应用程序有时可能在 pipeline 中发送 EVAL 或 EVALSHA 命令。Redis 通过 SCRIPT LOAD 命令(保证 EVALSHA 成功被调用)明确支持这种情况.

 

五、lua脚本,原子操作,不支持集群。

Jedis jedis = cache.getResource().getJedis();
String[] allUserKeys={"u1","u2"};
List<String> keys = Arrays.asList(allUserKeys);
List<String> params = new ArrayList<String>(); 
params.add("xx");
params.add("xxx");
String SCRIPT="";
String shaFuncKey = jedis.scriptLoad(SCRIPT);//加载脚本 
List<String> resultKeys=new ArrayList<String>();
try {
    resultKeys = (List<String>)jedis.evalsha(shaFuncKey, keys, params);
} catch (Exception e) {
    e.printStackTrace();
}

 

六、集群

Redis作者在3.0版本中已经加入了集群功能,而2.x版本中用ShardedJedis来实现分布式缓存,ShardedJedis是通过一致性哈希来实现分布式缓存的,通过一定的策略把不同的key分配到不同的redis server上,达到横向扩展的目的。其除了配置时有点区别,其他和Jedis基本类似。但不支持多命令操作,像mget、mset、brpop等。集群

    即使有了主从复制,每个数据库都要保存整个集群中的所有数据,容易形成木桶效应。
    使用Jedis实现了分片集群,是由客户端控制哪些key数据保存到哪个数据库中,如果在水平扩容时就必须手动进行数据迁移,而且需要将整个集群停止服务,这样做非常不好的。
redis3.0集群的特点:
(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.
(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.
(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可
(4)redis-cluster把所有的物理节点映射到[0-16383]slot(插槽)上,cluster
负责维护node<->slot<->value

 

 

测试:

先说说bitmap,就是基于位的映射,一个bit位标记一个元素的value,长度取决于最大的那个值。可做排序用。

优点:

    1. 运算效率高,不进行比较和移位;

    2. 占用内存少,比如最大的数MAX=10000000;只需占用内存为MAX/8=1250000Byte=1.25M。

缺点:

    1. 所有的数据不能重复,即不可对重复的数据进行排序。(少量重复数据查找还是可以的,用2-bitmap)。

 

 

    2. 当数据类似(1,1000,10万)只有3个数据的时候,用bitmap时间复杂度和空间复杂度相当大,只有当数据比较密集时才有优势

bug问题描述,setbit方法,offset偏移量就是比特位字符串的长度,即偏移100,就长度为100,所以当偏移量很大时,这个值就特别长,占用内存也特别大。导致线上缓存暴增。

 

 

说明

List 数据类型 没有 List 个数限制,单个元素最大值为 512 MB,推荐 list的元素个数小于 8192, value 最大长度不超过 1 MB。

Set 数据类型 没有 set 个数限制,单个元素最大值为 512 MB,推荐 set 的元素个数小于 8192, value 最大长度不超过 1 MB。

Sorted set 数据类型 没有 sorted set 个数限制,单个元素最大值为 512 MB,推荐 sorted set 的元素个数小于 8192, value 最大长度不超过 1 MB。

Hash 数据类型 没有 field 个数限制,单个元素最大值为 512 MB,推荐元素个数小于 8192, value 最大长度不超过 1 MB。

DB 数限制 每个实例支持 256 个 DB。

监控报警 云数据库 Redis 版未提供容量告警,需要用户到云监控中进行配置。配置方法请参见文档。

建议设置好以下监控的报警:实例故障、实例主备切换、已使用连接百分比、操作失败数、已用容量百分比、写入带宽使用率、读取带宽使用率。

数据过期删除策略 - 主动过期,系统后台会周期性的检测,发现已过期的key时,会将其删除。

- 被动过期,当用户访问某个key时,如果该key已经过期,则将其删除。

空闲连接回收机制 服务端不主动回收 Redis 空闲连接,由用户管理。

数据持久化策略 采用 AOF_FSYNC_EVERYSEC 方式,每秒 fysnc。

 

分析redis工具:

https://github.com/xiepaup/dbatools

分享到:
评论

相关推荐

    redis 常用命令

    ### Redis常用命令详解 Redis(Remote Dictionary Server)是一款开源的键值存储系统,以其高性能、低延迟的特点在缓存、消息队列等场景下得到广泛应用。本文将对Redis中的常用命令进行详细介绍,帮助读者更好地...

    redis基本命令-封装redis常用基本命令.zip

    封装redis常用基本命令.zip封装redis常用基本命令.zip封装redis常用基本命令.zip封装redis常用基本命令.zip封装redis常用基本命令.zip封装redis常用基本命令.zip封装redis常用基本命令.zip封装redis常用基本命令.zip...

    redis常用命令,redis配置文件,redis持久化,redis事务,redis主从复制,jedis的使用

    下面是对 Redis 的常用命令、配置文件、持久化、事务、主从复制、Jedis 使用的详细讲解。 Redis 常用命令 Redis 提供了很多有用的命令来管理和操作数据。下面是一些常用的 Redis 命令: * SET key value:设置...

    (175797816)华南理工大学信号与系统Signal and Systems期末考试试卷及答案

    内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。

    深圳建设施工项目安全生产奖惩管理制度.docx

    深圳建设施工项目安全生产奖惩管理制度

    离散数学课后题答案+sdut往年试卷+复习提纲资料

    离散数学课后题答案+sdut往年试卷+复习提纲资料

    自考04741计算机网络原理真题及答案及课件

    04741计算机网络原理 2018(尚德).pdf 13年试题(2套).pdf 2015年10月自考计算机网络原理04741试题及答案解析.docx 2021年4月自考04741计算机网络原理真题及答案.docx 2021年4月自考04741计算机网络原理试卷.bak.docx 计算机网络原理 课后题答案 全 李全龙版 自考04741.zip.zip 计算机网络原理课件 计算机网络原理课件.rar

    C++实现rpc,全程手写

    C++实现rpc,全程手写

    前端拿到的列表数据里id都一样的处理办法.txt

    前端拿到的列表数据里id都一样的处理办法.txt

    最新仿720云全景制作源码-krpano仿720云全景网站源码 新增微信支付+打赏+场景红包

    最新仿720云全景制作源码|krpano仿720云全景网站源码(新增微信支付+打赏+场景红包等)是一款基于php+mysql开发制作的全景在线制作网站源码,包含全景图片,全景视频等。数据存储全部存于OSS云端或本地,源码完全开源可自行二次开发。 环境要求:PHP5.5.X+MYSQL5.6.X+伪静态 熟悉linux系统推荐使用LAMP,web服务器最好使用apache,不要使用nginx(发布大全景图需要时间可能需要20多分钟, nginx超时机制不好控制)。 Windows系统推荐使用phpstudy。Liunx推荐宝塔控制面板apache 前端为HTML5开发,自适应手机版! 1、支持VR虚拟现实、全景视频、环物全景、说一说、点赞评论、重力感应、智能视频嵌入、场景切换热点、加载进度条、 地图导航、光晕flash特效、物体全景嵌入、场景自播、场景解说、雷达导航等业内前沿功能。 2、支持windows、Linux、Mac、安卓、IOS等几乎所有的系统观看。支持CDN图片转存,极大的减轻的服务器流量费用。 3、支持用户权限分配。方便会员制收费。

    YOLO算法-可乐罐子数据集-336张图像带标签-可乐.zip

    YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;

    环境监测系统源代码全套技术资料.zip

    环境监测系统源代码全套技术资料.zip

    【编码解码】基于matlab罗利衰落信道编解码器设计【含Matlab源码 9930期】.zip

    Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    四轮转向系统横摆角速度控制simulink仿真模型,利用滑模控制算法,基于八自由度车辆模型,控制有比较好的效果,附参考说明

    四轮转向系统横摆角速度控制simulink仿真模型,利用滑模控制算法,基于八自由度车辆模型,控制有比较好的效果,附参考说明。

    YOLO算法-工作场所安全隐患数据集-859张图像带标签-倒下的工人-配备个人防护装备的工人-无个人防护装备的工人-火.zip

    YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;

    自学考试02331数据结构试题及答案2021-2022

    02142数据结构导论历年真题及答案(2012-2018共13套).rar 02331数据结构历年真题共267页2009.10-2019.4.rar 24数据结构201704_8.pdf 25数据结构201710_10.pdf 26数据结构201804_11.pdf 27数据结构201810_9.pdf 全国2021年04月高等教育自学考试02331数据结构试题及答案.docx 全国2022年04月高等教育自学考试02331数据结构试题及答案.docx 数据结构-课件.rar 第l六讲.ppt 第一讲.ppt 第七讲.ppt 第三讲.ppt 第九讲.ppt 第二讲.ppt 第五讲.ppt 第八讲.ppt 第四讲.ppt

    验收确认单表格.docx

    验收确认单表格.docx

    内存搜索工具(易).rar

    内存搜索工具(易).rar

    饮食管理系统项目源代码全套技术资料.zip

    饮食管理系统项目源代码全套技术资料.zip

Global site tag (gtag.js) - Google Analytics