![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
redis
爱锅巴
这个作者很懒,什么都没留下…
展开
-
Redis通过防火墙配置开放局域网连接,禁用外网连接
Redis通过防火墙配置开放局域网连接,禁用外网连接,iptables配置禁用外网,redis禁用外网连接原创 2022-11-16 16:01:15 · 1233 阅读 · 0 评论 -
Redis创建带密码的集群
不带密码的集群创建redis-cli --cluster create 192.168.1.200:6379 192.168.1.200:6380 192.168.1.201:6379 192.168.1.201:6380 192.168.1.202:6379 192.168.1.201:6380 --cluster-replicas 1带密码的集群创建(后面加 -a 密码)redis-cli --cluster create 192.168.1.200:6379 192.168.1.200:638原创 2021-04-14 14:30:58 · 3704 阅读 · 3 评论 -
Redis学习笔记系列目录
本系列参考书是《Redis开发与运维》,没有通篇看完,摘取自己认为比较重要的章节做成笔记,杂糅一些网友智慧结晶,为有缘人的学习和日后自己的复习提供材料。Redis安装、配置、启动、关闭初识Redis单线程架构数据类型:字符串(string)数据类型:哈希(hash)数据类型:集合(set)数据类型:有序集合(zset)单个键管理遍历键数据库管理慢查询分析redis-cli详解redis-benchmark详解Pipeline事务Lua的基本使用Redis与Lua发布订阅原创 2020-06-04 10:47:26 · 212 阅读 · 0 评论 -
redis.conf配置文件(中文翻译)
部分配置做了中文翻译,可对照英文原文配置文档阅读# Redis 配置文件样本## 注意:如果想要读取配置文件的参数,必须将配置文件以第一参数的形式启动,如下启动示例:## ./redis-server /path/to/redis.conf# 单位说明:当需要设置内存大小时,可以用1K 5GB 4M等常用格式指定:## 1k => 1000 bytes# 1kb => 1024 bytes# 1m => 1000000 bytes# 1mb => 1024*1原创 2020-06-04 10:32:30 · 574 阅读 · 1 评论 -
Redis学习笔记—集群(Redis Cluster)
Redis Cluster是Redis的分布式解决方案,在3.0版本正式推出,有效地解决了Redis分布式方面的需求。当遇到单机内存、并发、流量等瓶颈时,可以采用Cluster架构方案达到负载均衡的目的数据分布Redis数据分区Redis Cluser采用虚拟槽分区,所有的键根据哈希函数映射到0~16383整数槽内,计算公式:slot=CRC16(key)&16383。每一个节点负责维护一部分槽以及槽所映射的键值数据,使用CRC16key16383将键映射到槽上如下图所示:Redis虚拟原创 2020-06-04 10:29:40 · 580 阅读 · 0 评论 -
Redis学习笔记—哨兵(Redis Sentinel)
Redis的主从复制模式下,一旦主节点由于故障不能提供服务,需要人工将从节点晋升为主节点,同时还要通知应用方更新主节点地址,对于很多应用场景这种故障处理的方式是无法接受的。Redis从2.8开始正式提供了Redis Sentinel(哨兵)架构来解决这个问题,Redis Sentinel是Redis的高可用实现方案,在实际的生产环境中,对提高整个系统的高可用性是非常有帮助的。主从复制的问题主从解决的问题如果主节点出故障了,从节点可以作为后备力量顶上来,保证了数据的一致性从节点拓展了主节点的读能力原创 2020-06-04 10:28:09 · 327 阅读 · 0 评论 -
Redis学习笔记—主从复制
在分布式系统中为了解决单点问题,通常会把数据复制多个副本部署到其他机器,满足故障恢复和负载均衡等需求。Redis也是如此,它为我们提供了复制功能,实现了相同数据的多个Redis副本。复制功能是高可用Redis的基础建立复制参与复制的Redis实例分为主节点(master)和从节点(slave)。每个从节点只能有一个主节点,主节点可以有多个从节点,复制的数据流是单向的,只能由主节点复制到从节点,有以下三种方式:在配置文件中加入slaveof{masterHost}{masterPort}随Redis启原创 2020-06-04 10:26:43 · 216 阅读 · 0 评论 -
Redis学习笔记—持久化机制之AOF
AOF(append only file)持久化:以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中的命令达到恢复数据的目的。AOF的主要作用是解决了数据持久化的实时性,目前已经是Redis持久化的主流方式。开启AOF功能需要设置配置:appendonly yes,AOF文件名通过appendfilename配置设置,默认文件名是appendonly.aof。保存路径同RDB持久化方式一致,通过dir配置指定。appendonly默认是no,需要改成yes# By default Redis原创 2020-06-04 10:25:03 · 344 阅读 · 0 评论 -
Redis学习笔记—持久化机制之RDB
Redis支持RDB和AOF两种持久化机制,持久化功能有效地避免因进程退出造成的数据丢失问题,当下次重启时利用之前持久化的文件即可实现数据恢复;本篇介绍RDB。RDB (Redis DataBase)持久化是把当前进程数据生成快照保存到硬盘的过程,触发RDB持久化过程分为手动触发和自动触发手动触发两个用于持久化的手动触发命令:save和bgsavesave命令:阻塞当前Redis服务器,直到RDB过程完成为止,对于内存比较大的实例会造成长时间阻塞,线上环境不建议使用。运行save命令对应的Redis原创 2020-06-04 10:14:02 · 422 阅读 · 0 评论 -
Redis学习笔记—客户端通讯协议RESP
Redis制定了RESP(REdis Serialization Protocol,Redis序列化协议)实现客户端与服务端的正常交互,这种协议简单高效,既能够被机器解析,又容易被人类识别发送命令格式RESP的规定一条命令的格式如下,CRLF代表”\r\n”*< 参数数量 > CRLF$< 参数 1 的字节数量 > CRLF< 参数 1> CRLF...$< 参数 N 的字节数量 > CRLF< 参数 N> CRLF以set h原创 2020-06-04 10:06:32 · 264 阅读 · 0 评论 -
Redis学习笔记—地理信息定位(GEO)
Redis3.2版本提供了GEO(地理信息定位)功能,支持存储地理位置信息用来实现诸如附近位置、摇一摇这类依赖于地理位置信息的功能,对于需要实现这些功能的开发者来说是一大福音增加地理位置信息geoadd key longitude latitude member [longitude latitude member ...]longitude、latitude、member分别是该地理位置的经度、纬度、成员添加北京的位置信息127.0.0.1:6379> geoadd cities 116原创 2020-06-03 13:20:37 · 481 阅读 · 0 评论 -
Redis学习笔记—发布订阅
Redis提供了基于“发布/订阅”模式的消息机制,此种模式下,消息发布者和订阅者不进行直接通信,发布者客户端向指定的频道(channel)发布消息,订阅该频道的每个客户端都可以收到该消息和很多专业的消息队列系统(例如Kafka、RocketMQ)相比,Redis的发布订阅略显粗糙,例如无法实现消息堆积和回溯。但胜在足够简单,如果当前场景可以容忍的这些缺点,也不失为一个不错的选择Redis主要提供了发布消息、订阅频道、取消订阅以及按照模式订阅和取消订阅等命令;发布消息publish channel原创 2020-06-03 10:39:14 · 138 阅读 · 0 评论 -
Redis学习笔记—Redis与Lua
使用Lua的好处Lua脚本在Redis中是原子执行的,执行过程中间不会插入其他命令Lua脚本可以帮助开发和运维人员创造出自己定制的命令,并可以将这些命令常驻在Redis内存中,实现复用的效果Lua脚本可以将多条命令一次性打包,有效地减少网络开销在Redis执行Lua脚本有两种方法:eval和evalshaevaleval 脚本内容 key 个数 key 列表 参数列表下面例子使用了key列表和参数列表来为Lua脚本提供更多的灵活性127.0.0.1:6379> eval 're原创 2020-06-03 10:32:43 · 274 阅读 · 0 评论 -
Lua的基本使用
从打印hello world开始输入命令 lua -i 或 lua 来启用交互式编程模式,使用print函数打印字符串"hello world":[root@vmzq1l0l ~]# luaLua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio> print("hello world")hello world>有交互是编程,也有脚本式编程编写脚本指定解释器为 /bash/lua (本人为centos7的系统,自带lua,如果其他版原创 2020-06-03 10:05:40 · 727 阅读 · 0 评论 -
Redis学习笔记—事务
事务简单理解就是一组命令要么执行,要么全部不执行,否则执行一部分数据会造成数据不一致的问题Redis提供了简单的事务功能,不支持回滚操作,将一组需要批量执行的命令放到multi和exec两个命令之间就可以实现简单地事务功能。multi命令代表事务开始exec命令代表事务结束discard命令代表中途中断下面添加一个名字为Charlie的成绩信息,要求一气呵成的添加,如果没有输入exec之前,数据的返回值是“QUEUED”排队的状态,输入exec之后数据就被写入到Redis里面了(如果中途想要中原创 2020-06-03 09:35:34 · 133 阅读 · 0 评论 -
Redis学习笔记—Pipeline
Redis客户端执行一条命令分为如下四个过程无论网络延如何延时,数据包总是能从客户端到达服务器,并从服务器返回数据回复客户端,这样的从1~4所需要的时间称为Round Trip Time(RTT,往返时间)Redis提供了批量操作命令(例如mget、mset等),有效地节约RTT,但是大部分命令不支持批量操作,这样每次去请求在网络上消耗时间是非常不明智的,Pipeline(流水线)机制能改善上面这类问题,它能将一组Redis命令进行组装,通过一次RTT传输给Redis,再将这组Redis命令的执行结果原创 2020-06-03 09:34:26 · 179 阅读 · 0 评论 -
Redis学习笔记—redis-benchmark详解
redis-benchmark可以为Redis做基准性能测试,它提供了很多选项帮助开发和运维人员测试Redis的相关性能-c-c(clients)选项代表客户端的并发量(默认50)-n-n(num)选项代表客户端请求数量(默认100000)例如测试100个客户端一共请求20000次[root@vmzq1l0l ~]# redis-benchmark -c 100 -n 20000redis-benchmark会对各类数据结构的命令进行测试,并给出性能指标====== MSET (10 ke原创 2020-06-03 09:33:41 · 3275 阅读 · 0 评论 -
Redis学习笔记—redis-cli详解
输入 redis-cli 连接到命令行客户端(默认host=127.0.0.1,port=6379)[root@vmzq1l0l ~]# redis-cli127.0.0.1:6379> -h-h(host:主机)选项代表主机IP,不输入默认为127.0.0.1[root@vmzq1l0l ~]# redis-cli -h 127.0.0.1127.0.0.1:6379>-p-p(port:端口)选项代表端口号,不输入默认为6379[root@vmzq1l0l ~]# re原创 2020-06-03 09:31:23 · 2693 阅读 · 0 评论 -
Redis学习笔记—慢查询分析
慢查询日志帮助开发人员定位系统存在的慢操作,慢查询就是系统在命令执行前后计算的每条命令的执行时间,当超过预设阈值,就将这条命令的相关信息(例如:发生时间,耗时,命令的详细信息)记录下来,Redis提供类似的功能客户端请求的四个执行步骤1.发送命令——2.排队等待执行——3.执行命令——4.返回结果慢查询只统计步骤3执行命令的这一步,所以没有慢查询并不等于客户端没有超时的情况慢查询的配置参数在redis.conf配置文件中有两个配置项:slowlog-log-slower-than和slowlog原创 2020-06-03 09:30:26 · 188 阅读 · 0 评论 -
Redis学习笔记—数据库管理
切换收据库select dbindexMySQL支持在一个实例下有多个数据库存在,但是关系型数据库是用字符来区分不同的数据库名,Redis只用数字来区分不同数据库,redis默认是16个数据库,在redis.conf配置文件有个默认配置databases 16。一般情况下不建议使用多数据库管理缓存,比如Redis的分布式实现Redis Cluster只允许使用0号数据库,如果想用多个数据库最好是布置多个redis实例用端口区分,用所有的实例的0号数据库,尽量不要做切换数据库的操作,以免难以维护在14原创 2020-06-03 09:27:57 · 173 阅读 · 0 评论 -
Redis学习笔记—遍历键
全量遍历键keys pattern查看所有的key、“J”开头的key、“T”或者“J”开头的key127.0.0.1:6379> keys *1) "Tom"2) "Jerry"3) "hello"4) "Java"127.0.0.1:6379> keys J*1) "Jerry"2) "Java"127.0.0.1:6379> keys [T,J]*1) "Tom"2) "Jerry"3) "Java"如果redis数据量数据量有大量键, keys命令原创 2020-06-02 18:26:39 · 353 阅读 · 0 评论 -
Redis学习笔记—单个键管理
键重命名rename key newkey重命名键名“python”为“java”127.0.0.1:6379> set python jedisOK127.0.0.1:6379> rename python javaOK127.0.0.1:6379> get python(nil)127.0.0.1:6379> get java"jedis"如果原来的键存在,rename会覆盖原来的键的值127.0.0.1:6379> set a bOK127原创 2020-06-02 18:22:01 · 150 阅读 · 0 评论 -
Redis学习笔记—数据类型:有序集合(zset)
有序集合相对于哈希、列表、集合来说会有一点点陌生,但既然叫有序集合,那么它和集合必然有着联系,它保留了集合不能有重复成员的特性,但不同的是,有序集合中的元素可以排序。但是它和列表使用索引下标作为排序依据不同的是,它给每个元素设置一个分数(score)作为排序的依据。集合内操作1.添加成员zadd key [nx|xx] [ch] [incr] score member [score member ...]nx:member必须不存在,才可以设置成功,用于添加xx:member必须存在,才可以设原创 2020-06-02 17:51:36 · 215 阅读 · 0 评论 -
Redis学习笔记—数据类型:集合(set)
集合(set)类型也是用来保存多个的字符串元素,但和列表类型不一样的是,集合中不允许有重复元素,并且集合中的元素是无序的,不能通过索引下标获取元素。集合内操作1.添加元素<pre>sadd key element [element ...]</pre>添加key为“myset”的集合,返回的是添加的个数127.0.0.1:6379> sadd myset a b c(integer) 3127.0.0.1:6379> sadd myset a b(int原创 2020-06-02 17:37:49 · 227 阅读 · 0 评论 -
Redis学习笔记—数据类型:哈希(hash)
几乎所有的编程语言都提供了哈希(hash)类型,它们的叫法可能是哈希、字典、关联数组。在Redis中,哈希类型是指键值本身又是一个键值对结构,形如value={{field1,value1},…{fieldN,valueN}}哈希类型中的映射关系叫作field-value,注意这里的value是指field对应的值,不是键对应的值,请注意value在不同上下文的作用。设置值hset key filed value为key名为user:1设置field-value127.0.0.1:6379&g原创 2020-06-02 17:18:39 · 386 阅读 · 0 评论 -
Redis学习笔记—数据类型:字符串(string)
字符串是Redis最基础的数据结构。首先键是字符串类型,而且其他几种类型都是在字符串类型的基础上构建的。字符串类型的值实际可以是字符串(简单的字符串、复杂的字符串(例如JSON、XML))、数字(整数、浮点数),甚至是二进制(图片、音频、视频),但是值最大不能超过512MB。设置值set命令set key value [ex seconds] [px milliseconds] [nx|xx]ex seconds:为键设置秒级过期时间127.0.0.1:6379> set hello wo原创 2020-06-02 17:03:14 · 167 阅读 · 0 评论 -
Redis学习笔记—单线程架构
Redis使用单线程架构和I/O多路复用模型来实现高性能的内存数据库服务Redis是单线程来处理命令,所以一条命令从客户端到达服务端不会立即执行,所有命令都会进入一个队列中,然后逐个被执行,不会出现两条命令同时执行的情况,不会产生并发的问题,这就是Redis单线程的基本模型。但是发送命令、返回结果、命令排队肯定不像描述的这么简单,Redis使用I/O多路复用技术来解决I/O的问题。为何单线程还可以这么快纯内存访问,Redis将所有的数据存放在内存中,内存的响应时间大约为100纳秒,这是Redis原创 2020-06-02 16:48:00 · 192 阅读 · 0 评论 -
Redis学习笔记—初识Redis
连接命令行客户端(redis-cli)redis-cli插入字符串类型的键值对(set key)127.0.0.1:6379> set hello worldOK127.0.0.1:6379> set java jedisOK插入列表类型(list)的键值对(set listkey val1 val2 … valN )127.0.0.1:6379> set mylist a b c d e查看某一个键的值(get key)127.0.0.1:6379> ge原创 2020-06-02 16:45:24 · 175 阅读 · 0 评论 -
Redis学习笔记—Redis安装、配置、启动、关闭
安装六个步骤(redis-5.0.3版本为例)wget http://download.redis.io/releases/redis-5.0.3.tar.gztar xzf redis-5.0.3.tar.gzln -s redis-5.0.3 rediscd redismakemake install下载指定版本的redis解压压缩包建立一个redis目录的软连接,指向redis-5.0.3进入redis目录编译(编译之前确保操作系统已经安装gcc)安装注意两点:第3步原创 2020-06-02 15:29:40 · 190 阅读 · 0 评论