redis基本配置和相关设置
redis-cli:the redis command line interface
command line usage:
$redis-cli incr mycounter
输出的结果只会显示在终端,如果需要将结果指定到相应的文件,需要自己定义
$redis-cli incr mycounter >/tmp/output.txt
连接非本机和非默认端口:
$redis-cli -h reedis15.localnet.org -p 6390 ping
如果实例通过密码保护:
$redis-cli -a kasumi ping
getting input from other programs:
$redis-cli -x set foo < /etc/services
或者
$cat /tmp/commands.txt | redis-cli
文件中的命令会一次执行
continuously run the same command:
-r:count -i:delay
$redis-cli -r 5 incr foo
(integer) 1
(integer) 2
(integer) 3
(integer) 4
(integer) 5
$redis-cli -r 1 -i 1 INFO | grep rss_human
CSV output:
使用redis-cli快速导出数据到外部程序
$redis-cli lpush mylist a b c d
(integer) 4
$redis-cli --csv lrange mylist 0 -1
"d","c","b","a"
running Lua scripts:
使用redis-cli执行脚本
$ cat /tmp/script.lua
return redis.call('set',KEYS[1],ARGV[1])
$ redis-cli --eval /tmp/script.lua foo , bar
OK
interactive mode:(交互模式 )
redis-cli对于脚本和确定类型的测试很有帮助,使用redis-cli而不加任何参数,将进入interactive mode.
使用connect连接不同的实例,指明主机名和端口:
connect metal 6379
metal:6379>
出于非连接状态的时候,CLI会企图自动重新连接,如果尝试连接失败,将会给出错误的信息,并且显示当前未连接的状态。
127.0.0.1:6379> debug restart
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected> ping
PONG
127.0.0.1:6379> (now we are connected again)
如果在操作的中间过程失去连接,当重新建立连接后,redis-cli会自动选择最新的数据,之前的数据状态会丢失,
虽然这不是一个经常发生的情况,但是需要了解这个限制。
getting a list of keys:
$redis-cli --scan | head -10
$redis-cli --scan --partten '-11' --使用--partten筛选需要查询的值的类型
$redis-cli --scan --partten 'user:*' | wc -1 --使用wc对筛选的结果进行统计
pub/sub mode:
sub需要块和等待信息的写入
$redis-cli psubscribe '*'
monitoring commands executed in redis:
$redis-cli monitor
可以使用grep来过滤需要监控的特定的数据
remote backup of RDB files:
在redis同步之后,主从通过RDB的形式交换数据.
$redis-cli --rdb /tmp/dump.rdb
SYNC sent to master, writing 13256 bytes to '/tmp/dump.rdb'
Transfer finished with success.
是备份恢复的有效解决方式,在备份的过程中,如果返回值不是0,则表明在备份的过程中出现了错误。
slave mode:
$redis-cli --slave
redis configuration:
redis可以通过安装时默认的配置文件启动,但是这只适用于测试.
the self documented redis.conf for redis3.0
--https://raw.githubusercontent.com/antirez/redis/3.0/redis.conf
changing redis configuration while the server is running:
在不停止和重启的情况下修改redis的配置文件,可以使用CONFID SET和CONFIG GET,但是这种更改对redis.conf文件不会有任何影响,
所以在下一次重启的时候,会使用之前的配置文件.
使用CONFIG REWRITE去重写redis.conf,会自动扫描redis.conf,更新与当前的配置不匹配的参数值。
replication:(复制)
1.redis使用异步的同步机制
2.一个主服务可以有多个从服务
3.从服务可以接受其他非同一注服务的从服务的连接,作为一个级联的结构
safety of replication when master has persistence turned off:
当开启复制的时候,强烈建议保持主服务一直开启,如果不能确保主服务一直开启,应当避免在服务器重启后,自动重启redis服务.
当从服务进行复制的时候,会删除之前保持的数据,保持新复制的数据。如果主服务出于关闭状态,当开机自动重启后,主服务中的数据是空的,
当从服务去复制数据的时候,将会复制空数据,然后删除之前所保留的数据。
every time data safety is important !!!
diskless replication:
repl-diskless-sync参数
slave-read-only
redis可写的数据个数大于63,但是默认redis实例只可以连接16个数据库
如果master使用了请求认证,slave在同步操作的时候需要进行密码验证,可以将master的密码认证写入到配置文件,永久生效:
masterauth
redis administration:
redis setup hints:
1.vim /etc/sysctl.conf
vm.overcommit_memory = 1
重启服务器或者执行sysctl vm.overcommit_memory=1使配置立即生效
2.停止linux内核的相关参数
echo never > /sys/kernel/mm/transparent_hugepage/enabled
3.确保有一定的swap空间
4.redis默认不需要密码验证,可以监听所有的接口
upgrading or restarting a redis instance without downtime:
1.开启slave,需要另外的服务器或者足够的RAM空间来保证两个redis实例同时运行
2.如果是单实例,则需要在其他端口运行redis服务
3.等待复制的初始同步完成
4.使用INFO确保master和slave保持相同的key值,并且slave可以响应指令
5.允许slave可以进行写操作:config set slave-read-only no
6.配置所有的客户端,使其可以使用新的实例
7.保证master不再接收任何序列,然后选取slave作为master,使用SLAVEOF NO ONE,然后关闭master
redis security:
bind 127.0.0.1
authentication feature:
如果有其他的防火墙的保护,就不需要进行密码的设置
$vim /data/redis/etc/redis.conf
requirepass Dm1vh3u1jyjsYMVc
redis clients handing:
in what order clients are served:
当有新的请求的时候,才会处理一个read的信号。
output buffers lilmits:
redis需要处理一个长度可变的输出缓存,命令可以产生很大的数据,传输给客户端。
hard limit:当缓存达到限制值的时候,redis会关闭其他客户端的连接
soft limit:依赖于时间的限制,在某一个连续的时间段,输出缓存超出某个限制,则会关闭连接
不同的客户端有不同的默认限制:
1.一般的用户,没有缓存的限制
2.pub/sub clients,hard limit:32 soft limit:8 60
3.slave,hard limit:256 soft limit:64 60
在配置文件中修改缓存的限制
client timeouts:
超时请求只适用于normal clients,不适用于pub/sub clients.
client list
查看连接的client,client kill+addr停止特定的client.
high availability:
1.监控:检测系统会持续检测master和slave是否正常工作
2.告警:检测系统会通过API通知管理员或者其他的计算机程序,redis出现了错误
3.走动的失败检测:当master服务没有正常运行的时候,检测系统会开启一个其他的slave作为新的master,其他的slave将以新的master来应用数据
4.配置文件提供者:当客户端进行连接的时候,检测系统会请求master的地址,响应服务,如果有失败出现,检测系统会提供新的master
running sentinel:
1.redis-sentinel /path/to/sentinel.conf
2.redis-server /path/to/sentinel.conf --sentinel
检测系统默认使用26379端口。检测系统会默认使用配置文件来开启服务,配置文件需要有可写的权限。
adding or removing sentinels:
A:redis的自动发现功能,会在添加sentinel后,自动接收数据,只需要在master上添加一个sentinel即可
如果要添加多个sentinel,需要一个一个的添加,当之前添加的sntinel可以接受数据后,再添加下一个
B:1.停止想要移除的sentinel程序
2.使用 SENTINEL RESET * 来执行需要移除的mater的tentinel
3.确保所有的sentinel可以发现目前所使用的sentinel的状态---SENTINEL MASTER mastername
removing the old master or unreachable slave:
slaves priority:
slave-priority,1.如果其值被设置为0,那么slave将永远不会被选作master
2.sentinel优先选择slave priority值较小的作为master
redis基本配置和相关设置的更多相关文章
- .NetCore Linux中安装Grafana界面及配置InfluxDB相关设置
前面的文章已经安装好了InfluxDB 安装 wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.1. ...
- 微信小程序开发环境安装以及相关设置配置
微信小程序开发环境安装以及相关设置配置 一.安装 软件名称:wechat_devtools_1.02.1907232_x64 软件安装地址:https://developers.weixin.qq.c ...
- Redis安装配置与Jedis访问数据库
一.NOSQL概要 NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库.NoSQL数据库的四大分类 键值(Key-Value)存储数据库 这一类数据 ...
- Redis错误配置详解
在使用Redis做缓存时,应用往往能得到非常高的性能.然而,如果配置不当,你将遇到很多令人头疼的问题,比如复制缓冲区限制.复制超时等. Redis提供了许多提高和维护高效内存数据库使用的工具.在无需额 ...
- REDIS主从配置及切换
最近公司项目也用上了.但有个点没有弄很明白. requirepass只是给CLIENT认证用的,还是同时给从REDIS认证用的?(masterauth) 一般的思路是主服务器不开AOF,从服务器打开A ...
- linux上redis安装配置及其防漏洞配置及其攻击方法
Linux上redis安装: 需先在服务器上安装yum(虚拟机可使用挂载的方式安装) 安装配置所需要的环境运行指令: yum -y install gcc 进入解压文件执行make 指令进行编译 执 ...
- 深入浅出—Redis集群的相关详解
前言: 这篇文章主要介绍了Redis集群的相关,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值. 注意!要求使用的都是redis3.0以上的版本,因为3.0以上增加了red ...
- Ubuntu16.04安装Redis并配置
Ubuntu16.04安装Redis并配置 2018年05月22日 10:40:35 Hello_刘 阅读数:29146 Ubuntu16.04安装Redis并配置 1):安装: 1:终端命令下载 ...
- redis集群及相关的使用
从redis 3.0之后版本支持redis-cluster集群,Redis-Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接. 1.所有的redis节点彼此互 ...
随机推荐
- HTML5 Web Worker的使用
Web Workers 是 HTML5 提供的一个javascript多线程解决方案,我们可以将一些大计算量的代码交由web Worker运行而不冻结用户界面. 一:如何使用Worker Web Wo ...
- 编写shell脚本遇到的问题
运行shell脚本提示“syntax error near unexpected token for((i=0;i<$length;i++))”: 原因是因为Linux下的换行符是 \n 而你在 ...
- Java程序员从笨鸟到菜鸟之(一百零二)sql注入攻击详解(三)sql注入解决办法
sql注入攻击详解(二)sql注入过程详解 sql注入攻击详解(一)sql注入原理详解 我们了解了sql注入原理和sql注入过程,今天我们就来了解一下sql注入的解决办法.怎么来解决和防范sql注入, ...
- Linux图片批处理
通过imagemagick的convert命令来处理. 将多个图片横向拼接(宽图): convert +append 1.jpg 2.jpg all.jpg #人为指定顺序 convert +appe ...
- Python 3 —— 控制语句
控制语句 1.if if <s>: ... elif <s>: ... else: ... 2 for for e in list .. if <s> break; ...
- easyconf——基于AugularJS的配置管理系统开发框架
目录 1 easyconf的诞生2 easyconf的设计理念 2.1 总体设计 2.2 细节设计 2.2.1 CRUD操作 2.2.2 即时校验 2.2.3 下拉框设计3 easyconf使用指南 ...
- Mac os x下配置nginx + php
一直都没使用过PHP的,最近leader推荐使用他在维护的一个移动端的js框架,在本地合并压缩使用的是php环境处理的,so,只能是搭一个PHP的环境了.一直使用的本地代理服务器都是nginx,虽然P ...
- C++函数返回局部指针变量
遇到过好几次关于函数返回指针变量问题,有时候是可以的,有时候是不可以的,然后就混乱了.今天研究了下,结果发现原来和内存分配有关. 用下面的例子分析下吧: char * test() { char a[ ...
- 第8章 NAND FLASH控制器
8.1 NAND Flash介绍和NAND Flash控制器使用 NAND Flash在嵌入式系统中的地位与PC上的硬盘类似 NAND Flash在掉电后仍可保存 8.1.1 Flash介绍 有NOR ...
- 初探Lambda表达式
简单例子 Expression<Func<; 了解Net方法,没有比IL来得更加容易.反编译IL代码如下(截取部分显示) [] <<int32, bool>> ex ...