当前位置: 首页 > news >正文

【数据库】redis 配置文件与发布订阅

目录

 配置文件

一,Units

二, INCLUDE

三,NETWORK

1, bind

2, tcp-backlog

3,timeout

4, tcp-keepalive

四,GENERAL

1,daemonize

2, pidfile

3,loglevel

4, logfile

5, databases

五,SECURITY

1,设置密码

六, CLIENTS

1, maxclients

2, maxmemory

3, maxmemory-policy

4,maxmemory-samples

 发布和订阅

1, 简介

2,常用命令

3, 示例演示


 配置文件

下面我们介绍 Redis 配置文件(redis.conf 文件)中有哪些配置项及它们的作用。

 

1,在根目录下面查找名为redis.conf的文件

find / -name redis.conf

2,切换到/etc/redis/

cd /etc/redis/

3,查看此目录下所有文件

ll

4,对redis.conf文件进行备份,注意所属者与所属组与原文件保持一致

cp -a redis.conf redis.conf.backup

使用命令ll再次查看,备份成功

5,编辑redis.conf文件

Vim redis.conf

(1)查看行号

:set nu

(2)取消行号

:set nonu  

(3)搜索关键字 bind(回车键后输入n,即可在关键字之间跳转)

/bind

(4)vim里面不能模糊匹配,在命令行用grep命令模糊匹配

-I  不区分大小写;.表示任意字符;*把前一项重复任意0次或n次

在redis.conf文件中使用grep命令模糊查找re..pass的行

grep re.*pass redis.conf

一,Units

配置大小单位,开头定义了一些基本的内存度量单位,只支持 bytes,不支持 bit。大小写不敏感。例如1k表示1000bytes,1kb表示1024bytes。

跳到行首:gg  或者  :1

 

 

二, INCLUDE

类似 JSP 程序中的 include,多实例的情况可以把公用的配置文件提取出来。

也就是说redis是支持包含其他文件的,可以将redis.conf当做一个父文件,包含子文件。

 

搜索include

/include

 

 

 

三,NETWORK

1, bind

默认情况下 bind=127.0.0.1 只能通过127.0.0.1接收请求。在不写的情况下,用户可以通过访问服务器的任意一张网卡访问redis服务器。

 

注意:如果开启了protected-mode,那么在没有设定bind ip且没有设密码的情况下,Redis只允许接受本机的响应。

本机访问保护模式默认值:yes

该服务默认端口号: 6379

bind没有写,密码没有设置,只能通过127访问,接受本机的响应

1,如果删掉bind=127.0.0.1 -::1以及bind 0.0.0.0

2,查找以bind开头的行,并没有找到

grep ^bind redis.conf

3,重启redis服务

systemctl restart redis

4,查看关于redis的进程

ps -ef | grep redis

5,查看进程的监听情况

ps -ef | grep redis

6,此时,连接失败

7,连接redis服务器,连接失败

redis-cli -h 192.168.206.128

方法一:添加bind

(1)在文件redis.conf中添加bind=0.0.0.0

(2)重启redis服务

systemctl restart redis

(3)重新连接,连接成功

redis-cli -h 192.168.206.128

(4)连接成功

(5)查看进程

 ps -ef | grep redis

(6)查看监听的端口号

ss -lntup | grep redis

方法二:设置密码

(1)打开文件redis.conf添加密码

requirepass 123456

(2)重启redis服务

systemctl restart redis

(3)重新连接,输入密码

 redis-cli -h 192.168.206.128pingauth 123456

 也可以直接加-a选项加上密码,后面就不用auth指定密码

redis-cli -h 192.168.206.128 -a 123456

(4)输入密码123456连接

2, tcp-backlog

设置 tcp 的 backlog,backlog 其实是一个连接队列,backlog队列为已经完成三次握手队列的长度。

在高并发环境下你需要一个高 backlog 值来避免客户端连接慢的问题。

注意:

Linux内核会将这个值减小到/proc/sys/net/core/somaxconn的值,所以需要确认增大/proc/sys/net/core/somaxconn和/proc/sys/net/ipv4/tcp_max_syn_backlog 两个值来达到想要的效果

 

 

 

3,timeout

一个空闲的客户端维持多少秒会关闭,0表示关闭该功能。即永不关闭。

 

 

4, tcp-keepalive

对访问客户端的一种心跳检测,每 n 秒检测一次。

单位为秒,如果设置为0,则不会进行 Keepalive 检测,建议设置成 60。

 

 

 

 

四,GENERAL

1,daemonize

是否为后台进程,即守护进程,用于后台启动,设置为yes。

 

 

 

2, pidfile

存放pid文件的位置,每个实例会产生一个不同的pid文件。

 

 

(1)查看redisrun目录是否有写的权限,结果没有权限

ll /run -d

 

(2)查看redisredis目录是否有写的权限,结果有权限

ll -d redis/

 

(3)将存放pid文件的位置路径改为/var/run/redis/redis_6379.pid 

 

(4)重启服务

systemctl restart redis

 

(5)切换到目录/var/run/redis查看所有文件会发现redis_6379.pid文件

 

(6)打开redis_6379.pid文件

cat redis_6379.pid

 

(7)查看进程,发现redispid2038

ps -ef | grep redis

 

 

 

3,loglevel

指定日志记录级别,Redis 总共支持四个级别:debug、verbose、notice、warning,默认为notice。

四个级别根据使用阶段来选择,生产环境选择 notice 或者warning。

warning级别最高

 

 记录的日志文件在/var/log/redis/redis.log

 

查看文件/var/log/redis/redis.logll /var/log/redis/redis.log

 

 

 

4, logfile

日志文件名称

 

 ,

5, databases

设定库的数量,默认16,默认数据库为0,可以使用 SELECT <dbid>命令在连接上指定数据库id。

 

 

 

五,SECURITY

1,设置密码

当设置好密码后(即把 requirepass foobared 注解解开),然后使用客户端连接服务器后,在执行 set 命令时,提示需要获取权限。

可以在命令中访问密码的查看、设置和取消。

 

 

(1)打开文件redis.conf添加密码

requirepass 123456

(2)重启redis服务

systemctl restart redis

(3)重新连接,输入密码

 redis-cli -h 192.168.206.128pingauth 123456

(4)也可以直接加-a选项加上密码,后面就不用auth指定密码

redis-cli -h 192.168.206.128 -a 123456

(5)也可以用下面的方法获取密码

config get requirepass

(6)也可以用下面的方法设置密码

config set requirepass 654321

(7)使用修改后的密码登录

redis-cli -h 192.168.206.128 -a 654321

注意:

在命令中设置密码,只是临时的。重启redis服务器,密码就还原了。

永久设置,需要在配置文件中进行设置。

 

 

 

六, CLIENTS

1, maxclients

设置redis同时可以与多少个客户端进行连接。默认情况下为10000个客户端。如果达到了此限制,redis则会拒绝新的连接请求,并且向这些连接请求方发出“max number of clients reached”以作回应。

 

 

2, maxmemory

建议必须设置,否则可能导致将内存占满,造成服务器宕机。

设置redis可以使用的内存量。一旦到达内存使用上限,redis将会试图移除内部数据,移除规则可以通过maxmemory-policy来指定。

如果redis无法根据移除规则来移除内存中的数据,或者设置了“不允许移除”,那么redis则会针对那些需要申请内存的指令返回错误信息,比如SET、LPUSH等。

但是对于无内存申请的指令,仍然会正常响应,比如GET等。如果你的redis是主redis(说明你的redis有从redis),那么在设置内存使用上限时,需要在系统中留出一些内存空间给同步队列缓存,只有在你设置的是“不移除”的情况下,才不用考虑这个因素。

 

 

 

3, maxmemory-policy

用于设置内存达到使用上限后的移除规则。有以下参数可设置:

  • volatile-lru:只限于设置了 expire 的部分; 优先删除最近最少使用(less recently used ,LRU) 的 key。
  • allkeys-lru:所有key通用; 优先删除最近最少使用(less recently used ,LRU) 的 key。
  • volatile-random:只限于设置了 expire 的部分; 随机删除一部分 key。
  • allkeys-random:所有key通用; 随机删除一部分 key。
  • volatile-ttl:只限于设置了 expire 的部分; 优先删除剩余时间(time to live,TTL) 短的key。
  • noeviction:不删除策略。达到最大内存限制时, 如果需要更多内存, 直接返回错误信息。(默认值)

 

  

 

4,maxmemory-samples

redis中并不会准确的删除所有键中最近最少使用的键,而是随机抽取maxmeory-samples个键,删除这个样本中最近最少使用的键。

maxmemory-samples用于设置样本数量,LRU算法和最小TTL算法都并非是精确的算法,而是估算值,所以你可以设置样本的大小,redis默认会检查这么多个key并选择其中最少使用或者存活时间最短的那个。

一般设置3到7的数字,数值越小样本越不准确,但性能消耗越小。

 

 

 

 发布和订阅

1, 简介

Redis提供了基于“发布/订阅”模式的消息机制。此种模式下,消息发布者和订阅者不进行直接通信,发布者客户端向指定的频道(channel) 发布消息,订阅该频道的每个客户端都可以收到该消息。

Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。Redis 客户端可以订阅任意数量的频道。下图展示了频道 channel1 ,以及订阅这个频道的三个客户端 —— client1 、client2 和 client3 之间的关系:

当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:

2,常用命令

序号

命令语法

描述

1

PSUBSCRIBE pattern [pattern ...]

订阅一个或多个符合给定模式的频道

2

PUBSUB subcommand [argument [argument ...]]

查看订阅与发布系统状态,例如:PUBSUB channels

3

PUBLISH channel message

将信息发送到指定的频道

4

PUNSUBSCRIBE [pattern [pattern ...]]

退订所有给定模式的频道

5

SUBSCRIBE channel [channel ...]

订阅给定的一个或多个频道的信息

6

UNSUBSCRIBE [channel [channel ...]]

退订给定的频道

3, 示例演示

以下实例演示了发布订阅是如何工作的。

(1)创建了订阅频道名为 redisChat:

subscribe redischat

 

(2)现在,我们先重新开启1个 redis 客户端,然后在同一个频道 redisChat 发布两次消息,订阅者就能接收到消息。

 publish redischat "send message"

然后切换到前一个客户端,就可以看到如下信息:

在第二个端口再次发布hello world

publish redischat "hello world"

在前一个端口查看订阅信息

相关文章:

【数据库】redis 配置文件与发布订阅

目录 配置文件 一&#xff0c;Units 二&#xff0c; INCLUDE 三&#xff0c;NETWORK 1&#xff0c; bind 2&#xff0c; tcp-backlog 3&#xff0c;timeout 4&#xff0c; tcp-keepalive 四&#xff0c;GENERAL 1&#xff0c;daemonize 2&#xff0c; pidfile 3&…...

ChatGPT来了,英语不能丢,但我不想上班

文 / 谷雨&#xff08;微信公众号&#xff1a;王不留&#xff09; 好久没写文&#xff0c;可能大伙已把我忘了。春节之后&#xff0c;状态一直不太好。我在2月1号时从老家直接来到了深圳出差&#xff0c;而后以996的工作状态疲于应付工作中的各种问题。 终于这周末休息了两天&a…...

【LeetCode】二叉树的直径 [E](二叉树)

543. 二叉树的直径 - 力扣&#xff08;LeetCode&#xff09; 一、题目 给定一棵二叉树&#xff0c;你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。 示例 : 给定二叉树 1 / \ 2 3 …...

Mybatis框架详解(全)

目录 MyBatis简介 MyBatis整体架构及运行流程 1.数据源配置文件 2.Sql映射文件 3.会话工厂与会话 4.运行流程 mybatis实现增删改查 Mybatis的获取参数的方式 mapper中自定义映射 mybatis注解开发 mybatis缓存 mybatis分页插件 MyBatis简介 MyBatis 是一款优秀的持久…...

2023年爆火的csgo搬砖项目详细拆解,steam搬砖长期稳定

不懂的同学可以听我下面慢慢道来 我的态度&#xff1a;存在即有意义&#xff0c;没有长久的赚钱项目&#xff0c;但是一定有长久赚钱的人。 我们团队也一直在做这个项目&#xff0c;赚钱是一定的&#xff0c;简单总结&#xff1a;执行力技巧量化。 开门见山 一、steam搬砖项…...

C语言实现动态管理通讯录信息系统(静态通讯录plus版)

文章目录前言&#xff1a;一.动态管理思想1.通讯录结构体声明发生变化2.通讯录结构体初始化发生变化3.通讯录能够动态增容4.通讯录销毁数据二.优化通讯录可持续读写信息1.保存通讯录中的信息到文件中2.加载文件信息到通讯录中三.源码1.text.c2.contact.c3.contact.h前言&#x…...

核心技术: springboot 启动类加载时方法执行的几种实现方式, bean声明周期, 启动执行顺序

目录 1. 业务场景 -> 1.1 初始化操作 -> 1.2 业务操作 -> 1.3优势 2. 实现方式(多种方式,不同思想) -> 2.1 定时调度任务(常用四种方式 task ) --> 2.1.1 Timer(单线程) --> 2.1.2 scheduledExecutorService(多线程并发执行,线程池) --> 2.1…...

拒绝背锅:测试项目中的风险管理一定要知道

测试经理除了要管理产品线的质量保障和日常部门事务工作外&#xff0c;另一项比较重要的就是测试项目全流程的管理。 今天不聊整体的测试项目流程如何开展&#xff0c;而是想聊一聊在同行中比较高频出现的一个字眼&#xff1a;风险管理。 什么是风险管理 引用百度上的解释&a…...

20-js本地存储

js本地存储 localStorage localStorage是window下的对象&#xff0c;可以使用window.localStorage调用&#xff0c;也可以直接使用localStorage调用。 浏览器关闭&#xff0c;localStorage也不会消失 示例&#xff1a; <body><h2>localStorage</h2><…...

ABAP 辨析ON INPUT|REQUEST|CHAIN-INPUT|CHAIN-REQUEST

1、逻辑流 在屏幕开发中&#xff0c;存在如下逻辑流&#xff1a; PBO&#xff08;Process Before Output&#xff09;&#xff1a;屏幕输出之前触发 PAI&#xff08;Process After Input&#xff09;&#xff1a;用户在屏幕中执行操作触发 POH&#xff08;Process On Help-…...

LeetCode:逆波兰式;

150. 逆波兰表达式求值 给你一个字符串数组 tokens &#xff0c;表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意&#xff1a; 有效的算符为 、-、* 和 / 。每个操作数&#xff08;运算对象&#xff09;都可以是一个整…...

为什么阳康后,感觉自己变傻了?

不少人在阳康后出现脑力下降的情况&#xff0c;好像脑子里被雾笼罩。脑雾并不是新名词&#xff0c;已经存在了十几年。以前慢性疲劳综合征患者和脑震荡患者会用它来形容自己的症状。脑雾其实是认知障碍&#xff0c;它可由多种原因引起。比如过度劳累、长期酗酒、缺乏睡眠、久坐…...

考公和大厂40万年薪的offer,选哪个?

眼看毕业将至&#xff0c;相信很多小伙伴已经摩拳擦掌&#xff0c;在为毕业季就业做准备了。2023年高校毕业生规模预计1158万人&#xff0c;同比增加82万人。在资深人力资源服务家汪张明看来&#xff0c;2023年的就业态势不仅是大学毕业生数量有增加&#xff0c;还存在一定的存…...

多线程环境下调用 HttpWebRequest 并发连接限制

.net 的 HttpWebRequest 或者 WebClient 在多线程情况下存在并发连接限制&#xff0c;这个限制在桌面操作系统如 windows xp , windows 7 下默认是2&#xff0c;在服务器操作系统上默认为10. 如果不修改这个并发连接限制&#xff0c;那么客户端同时可以建立的 http 连接数就只有…...

vue3-element-admin搭建

vue3-element-admin 是基于 vue-element-admin 升级的 Vue3 Element Plus 版本的后台管理前端解决方案&#xff0c;是 有来技术团队 继 youlai-mall 全栈开源商城项目的又一开源力作功能清单技术栈清单技术栈 描述官网Vue3 渐进式 JavaScript 框架 https://v3.cn.vuejs.org/Ty…...

蓝海创意云vLive虚拟直播亮相2023昆山元宇宙产品展览会

2月15日-19日&#xff0c;由中国计算机行业协会“元宇宙创见未来”2023元宇宙产品展览会在江苏昆山隆重召开&#xff0c;共吸引了省内外32家企业参展&#xff0c;展出近百款元宇宙产品或技术&#xff0c;涵盖芯片、显示、VR、AR等硬件设备&#xff0c;以及工业、文旅、娱乐、教…...

ThreadLocal线程变量

首先看下ThreadLocal的set()方法存数据的过程&#xff0c;首先获取当前的线程中保持的ThreadLocalMap&#xff0c;每个线程的ThreadLocalMap都是不一样的&#xff0c;因此存储的值是不同的。 public void set(T value) {Thread t Thread.currentThread();ThreadLocalMap map …...

【linux安装redis详解】小白如何安装部署redis,linux安装部署只需5步骤(图文结合,亲测有效)

【写在前面】前端时间接触了一下redis&#xff0c;也是迫于页面查询响应太慢&#xff0c;没办法听说redis这个可持久化内存数据库&#xff0c;于是乎便想着在自己的机器上安装一套&#xff0c;接下来就重点和大家说说怎么从小白开始摸索redis 目录1、下载2、安装2.1 创建文件存…...

2023只会“点点点”,被裁只是时间问题,高薪的自动化测试需要掌握那些技能?

互联网已然是存量市场了&#xff0c;对人员规模的需求正在放缓。在存量市场里&#xff0c;冗余人员和低效人员会被淘汰、被外包。而优秀的人才也会一直受到招聘方的青睐。所以我们就看到了近期行业里冰火两重天的一幕&#xff0c;一边是大量的低端测试工程师被淘汰、求职屡屡碰…...

C语言【柔性数组】

柔性数组&#x1fac5;什么是柔性数组&#x1fac5;柔性数组的使用&#x1fac5;柔性数组的优势&#x1fac5;什么是柔性数组 也许你从来没有听说过柔性数组&#xff08;flexible array&#xff09;这个概念&#xff0c;但是它确实是存在的。 C99 中&#xff0c;结构中的最后一…...

AcWing275. 传纸条

AcWing275. 传纸条小渊和小轩是好朋友也是同班同学&#xff0c;他们在一起总有谈不完的话题。一次素质拓展活动中&#xff0c;班上同学安排坐成一个 m行 n 列的矩阵&#xff0c;而小渊和小轩被安排在矩阵对角线的两端&#xff0c;因此&#xff0c;他们就无法直接交谈了。幸运的…...

圆角矩形的绘制和曲线均匀化

摘要&#xff1a; 圆角矩形是软件 UI 等视觉设计中的常见表达&#xff0c;一种常见的绘制方法是将矩形的四角替换为与边相切的四分之一圆弧&#xff0c;然而这种绘制方式会在连接处产生视觉上的切折感&#xff0c;这是因为圆弧和直线的连接处只满足 G1G^1G1 连续性。本文探究了…...

【Linux】环境变量,命令行参数,main函数三个参数保姆教学

目录 ☃️1.奇奇怪怪的现象和孤儿进程 ☃️2.环境变量 ☃️3.深刻理解main函数的前两个参数和命令行参数 ☃️1.奇奇怪怪的现象和孤儿进程 首先回顾一下之前我们学过的fork&#xff08;&#xff09;创建子进程 fork(void)的返回值有两种 注意fork&#xff08;&#xff09;头…...

美国访问学者生活中有哪些饮食文化特点?

美国的教育毋庸置疑&#xff0c;排在世界数一数二的位置&#xff0c;美食美景更是数不胜数&#xff0c;那么他们有哪些饮食习惯&#xff0c;下面51访学网小编为你们详细介绍这些内容吧。 一、美国饮食文化特点 1、美国的饮食文化体现科学、适度、快捷&#xff0c;以满足人体的…...

RxJava中的Subject

要使用Rxjava首先要导入两个包&#xff0c;其中rxandroid是rxjava在android中的扩展 implementation io.reactivex:rxandroid:1.2.1implementation io.reactivex:rxjava:1.2.0Subject Subject 既可以是一个 Observer 也可以是一个 Observerable&#xff0c;它是连接 Observer 和…...

vue-element-admin在git 上 clone 之后无法install

一. 无法install的原因因为vue-element-admin引入的富文本编辑插件所导致 由于tui-editor变更 名字 导致 依赖查询找不到对应的版本二. 解决的办法先删掉package.json中tui-editor:1.3.3找到 \src\components\MarkdownEditor\index.vue 把所有的import 替换成下面4个import cod…...

Linux线程调度实验

Linux线程调度实验 1.获取线程属性 #include <stdio.h> #include <sys/types.h> #include <unistd.h> #include <pthread.h> #include <time.h> #include <stdlib.h> #include <errno.h> #define _GNU_SOURCE#define handle_error…...

洛谷P5735 【深基7.例1】距离函数 C语言/C++

【深基7.例1】距离函数 题目描述 给出平面坐标上不在一条直线上三个点坐标 (x1,y1),(x2,y2),(x3,y3)(x_1,y_1),(x_2,y_2),(x_3,y_3)(x1​,y1​),(x2​,y2​),(x3​,y3​)&#xff0c;坐标值是实数&#xff0c;且绝对值不超过 100.00&#xff0c;求围成的三角形周长。保留两位…...

企业什么要建设自有即时通讯软件系统

随着科技的不断发展&#xff0c;各种即时通讯软件也不断发展进步&#xff0c;而这也与企业的发展息息相关&#xff0c;因为每个人&#xff0c;每个企业都有属于自己的机密&#xff0c;属于自己的隐私。 钉钉&#xff0c;企业微信&#xff0c;等公有的即时通讯软件给企业带来便利…...

LocalDNS

目录 文章目录目录本节实战DNS优化1、dns 5s 超时问题解决办法2、NodeLocal DNSCache实验软件关于我最后本节实战 实战名称&#x1f498; 实战&#xff1a;NodeLocal DNSCache-2022.7.30(测试成功)&#x1f498; 实战&#xff1a;NodeLocal DNSCache-2023.2.21(测试成功) DNS优…...