Redis具体解释与常见问题解决方式
Redis简单介绍
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对很多其它。包含string(字符串)、list(链表)、set(集合)、zset(sortedset
--有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,并且这些操作都是原子性的。在此基础上。redis支持各种不同方式的排序。
与memcached一样,为了保证效率,数据都是缓存在内存中。
差别的是redis会周期性的把更新的数据写入磁盘或者把改动操作写入追加的记录文件。并且在此基础上实现了master-slave(主从)同步。
安装:
安装Redis
官方站点:http://redis.io/
官方下载:http://redis.io/download 能够依据须要下载不同版本号
windows版:https://github.com/ServiceStack/redis-windows
下载安装包:
解压启动Redis
解压redis64-2.8.17版本号后,找到redis.windows.conf。改动配置文件内容,内容例如以下。
支持数据结构
redis提供五种数据类型:String,hash。list。set及zset(sortedset)。
Redis配置文件主要參数配置
1、指定Redis监听port,默认port为6379。
port 6379
2、绑定的主机地址
bind 127.0.0.1
3、当client闲置多长时间后关闭连接。假设指定为0,表示关闭该功能
timeout 300
4、指定日志记录级别。Redis总共支持四个级别:debug、verbose、notice、warning,默觉得verbose。
loglevel verbose
5、日志记录方式。默觉得标准输出,假设配置Redis为守护进程方式执行,而这里又配置为日志记录方式为标准输出,则日志将会发送给/dev/null。
logfile stdout
6、设置数据库的数量,默认数据库为0。能够使用SELECT <dbid>命令在连接上指定数据库id。
databases 16
7、指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,能够多个条件配合。
save <seconds><changes>
8、Redis默认配置文件里提供了三个条件:
save 900 1
save 300 10
save 60 10000
分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改。
9、指定存储至本地数据库时是否压缩数据,默觉得yes,Redis採用LZF压缩,假设为了节省CPU时间,能够关闭该选项。但会导致数据库文件变的巨大。
rdbcompression yes
10、指定本地数据库文件名称。默认值为dump.rdb。
dbfilename dump.rdb
11、 指定本地数据库存放文件夹。
dir ./
12、设置当本机为slave服务时。设置master服务的IP地址及port。在Redis启动时,它会自己主动从master进行数据同步。
slaveof <masterip><masterport>
13、当master服务设置了password保护时。slave服务连接master的password。
masterauth <master-password>
14、设置Redis连接password,假设配置了连接password,client在连接Redis时须要通过AUTH <password>命令提供password,默认关闭。
requirepass foobared
15、设置同一时间最大client连接数,默认无限制。Redis能够同一时候打开的client连接数为Redis进程能够打开的最大文件描写叙述符数,假设设置 maxclients 0。表示不作限制。当client连接数到达限制时,Redis会关闭新的连接并向client返回max number of clientsreached错误信息。
maxclients 128
16、指定Redis最大内存限制,Redis在启动时会把数据载入到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理 后。仍然到达最大内存设置,将无法再进行写入操作。但仍然能够进行读取操作。Redis新的vm机制,会把Key存放内存,Value会存放在swap区。
maxmemory <bytes>
17、指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘。假设不开启。可能会在断电时导致一段时间内的数据丢失。由于 redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内仅仅存在于内存中。
默觉得no。
appendonly no
18、指定更新日志文件名称,默觉得appendonly.aof
appendfilename appendonly.aof
19、指定更新日志条件。共同拥有3个可选值:
no:表示等操作系统进行数据缓存同步到磁盘(快)
always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)
everysec:表示每秒同步一次(折衷。默认值)
appendfsync everysec
20、 设置在向client应答时,是否把较小的包合并为一个包发送,默觉得开启
glueoutputbuf yes
21、指定在超过一定的数量或者最大的元素超过某一临界值时,採用一种特殊的哈希算法。
hash-max-zipmap-entries 64
hash-max-zipmap-value 512
22、指定是否激活重置哈希。默觉得开启(后面在介绍Redis的哈希算法时详细介绍)。
activerehashing yes
23、slave依据指定的时间间隔向server发送ping请求。
时间间隔能够通过 repl_ping_slave_period 来设置。默认10秒
repl-ping-slave-period10
24、当一个slave失去和master的连接,或者同步正在进行中,slave的行为有两种可能:
(1) 假设 slave-serve-stale-data 设置为 "yes" (默认值),slave会继续响应client请求,可能是正常数据。也可能是还没获得值的空数据。
(2) 假设 slave-serve-stale-data 设置为 "no",slave会回复"正在从master同步(SYNCwith master in progress)"来处理各种请求。除了 INFO 和 SLAVEOF 命令。
slave-serve-stale-datayes
25、Redis主从配置
redis支持master-slave的主从配置,配置方法是在从机的配置文件里指定slaveof參数为主机的ip和port就可以。
slaveof 192.168.1.23 6379
26、 指定包括其他的配置文件,能够在同一主机上多个Redis实例之间使用同一份配置文件,而同一时候各个实例又拥有自己的特定配置文件。
include /path/to/local.conf
include /path/to/other.conf
Redis中常见异常处理以及内存CPU优化
Redis常出现故障总结:
1、当出现改动--maxheap and --heapdir
在启动这两个版本号时都会创建一个 RedisQFork.dat文件,我不确定 RedisQFork 文件是否变小一点, 但我确定, 你能够通过设置Redis启动參数 heapdir 来调整这个文件的位置。
我在 redis.windows.conf文件里搜索"heapdir",然后在默认凝视掉的内容以下加入一行,指定Redis内存映射文件(memory mapped file)存放的路径:
2、redis常见异常处理
|
1 2 3 |
|
详细文件和文件夹就请你依据自己的磁盘进行指定啦. 我的症状和情况是这种, 16GB内存,Windows版64bit的Redis。启动Redis后就在C盘的C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Redis文件夹以下生成一个16GB大小的 RedisQFork_8792.dat 文件(8792是本次启动的进程PID, 关闭redis 则此文件自己主动被删除). 本来当初为了省钱仅仅上了64GB的固态硬盘,结果16G一吃下来,C盘就仅仅有16GB空余空间,自从设置到D盘,重新启动以后,感觉强迫症就好多了。
3、常见异常处理
假设你遇到 java.net.SocketTimeoutException: Readtimed out exception的异常信息
请尝试在构造JedisPool的时候设置自己的超时值. JedisPool默认的超时时间是2秒(单位毫秒)
pool = new JedisPool(config, ip,port,RedisConfig.getTimeout());
4、Redis中CPU使用效率优化
将no-appendfsync-on-rewrite的配置设为yes能够缓解这个问题。设置为yes表示rewrite期间对新写操作不fsync。临时存在内存中。等rewrite完毕后再写入。
最好是不开启Master的AOF备份功能。
Redis也能够关闭自己主动持久化,凝视掉这些save配置,或者save “”
假设后台保存到磁盘错误发生,将停止写操作。
stop-writes-on-bgsave-error yes。
使用LZF压缩rdb文件,这会耗CPU, 可是能够降低磁盘占用。
rdbcompression yes
保存rdb和载入rdb文件的时候检验,能够防止错误。可是要付出约10%的性能,能够关闭他,提高性能。
rdbchecksum yes
5、当出现下面错误时:
VirtualAlloc/COWAlloc fail! Out Of Memory allocating 42bytes!
改动:maxmemory 1024000000
maxheap 1024000000
Redisclient经常使用命令
get key
set key value
clear
exists key
del key
dbsize
lpush key value
info all
info
monitor
hgetall key
redis 127.0.0.1:6379> info #查看server版本号内存使用连接等信息
redis 127.0.0.1:6379> client list #获取客户连接列表
redis 127.0.0.1:6379> client kill 127.0.0.1:33441 #终止某个客户端连接
redis 127.0.0.1:6379> dbsize #当前保存key的数量
redis 127.0.0.1:6379> save #马上保存数据到硬盘
redis 127.0.0.1:6379> bgsave #异步保存数据到硬盘
redis 127.0.0.1:6379> flushdb #当前库中移除全部key
redis 127.0.0.1:6379> flushall #移除全部key从全部库中
redis 127.0.0.1:6379> lastsave #获取上次成功保存到硬盘的时间戳
redis 127.0.0.1:6379> monitor #实时监測server接收到的请求
redis 127.0.0.1:6379> slowlog len #查询慢查询日志条数
redis 127.0.0.1:6379> slowlog get #返回全部的慢查询日志,最大值取决于slowlog-max-len配置
redis 127.0.0.1:6379> slowlog get 2 #打印两条慢查询日志
redis 127.0.0.1:6379> slowlog reset #清空慢查询日志信息
Redis具体解释与常见问题解决方式的更多相关文章
- Redis 的几种常见使用方式
常见使用方式 Redis 的几种常见使用方式包括: Redis 单副本 Redis 多副本(主从) Redis Sentinel(哨兵) Redis Cluster Redis 自研 各种使用方式的优 ...
- CentOS 7 PHP-redis扩展安装,浏览器不显示数据及redis无法储存数据常见问题解决办法
首先使用php -m 可以查看到自己安装了那些扩展. 1.使用wget下载redis压缩包 wget https://github.com/phpredis/phpredis/archive/deve ...
- jedis操作redis的几种常见方式总结
Redis是一个著名的key-value存储系统,也是nosql中的最常见的一种,这篇文章主要给大家总结了关于在java中jedis操作redis的几种常见方式,文中给出了详细的示例代码供大家参考学习 ...
- 老出BUG怎么办?游戏服务器常见问题解决方法分享
在游戏开发中,我们经常会遇到一些技术难题,而其引发的bug则会影响整个游戏的品质.女性向手游<食物语>就曾遇到过一些开发上的难题,腾讯游戏学院专家团Wade.Zc.Jovi等专家为其提供了 ...
- springmvc环境搭建以及常见问题解决
1.新建maven工程 a) 打开eclipse,file->new->project->Maven->Maven Project b) 下一步 c) 选择创建的工程为 ...
- kettle常见问题解决
开源ETL工具kettle系列之常见问题 摘要:本文主要介绍使用kettle设计一些ETL任务时一些常见问题,这些问题大部分都不在官方FAQ上,你可以在kettle的论坛上找到一些问题的答案 1. J ...
- OpenStack安装部署管理中常见问题解决方法
一.网络问题-network 更多网络原理机制可以参考<OpenStack云平台的网络模式及其工作机制>. 1.1.控制节点与网络控制器区别 OpenStack平台中有两种类型的物理节点, ...
- 接口测试之——Charles抓包及常见问题解决(转载自https://www.jianshu.com/p/831c0114179f)
简介 Charles其实是一款代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的.该软件是用Java写的,能够在Windows,Mac,Linux上使用,安装Charl ...
- $.ajax()方法详解 ajax之async属性 【原创】详细案例解剖——浅谈Redis缓存的常用5种方式(String,Hash,List,set,SetSorted )
$.ajax()方法详解 jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为Str ...
随机推荐
- SpringMVC系列之URL匹配问题
一.工程目录 二.web.xml配置文件及与其他文件的关系 三.控制器部分 四.返回值 五.url前后缀 六.项目源代码 http://files.cnblogs.com/files/xujian20 ...
- 2014 华为校招机试题(c/c++开发类)
第一题: 1.2.3....n盏灯,同时有n个人, 第1个人将1的倍数的灯拉一下, 第2个人将2的倍数的灯拉一下, ...... 问最后有几盏灯是亮的, 初始状态下灯是灭的, 输入整数n(n<6 ...
- No.3 PyQt学习
使用box布局,写了 一个系统的主页(非常丑) 代码如下: # -*- coding: utf-8 -*- import sys from PyQt4.QtGui import * from PyQt ...
- 合格PHP工程师的知识结构
摘自http://www.cnblogs.com/ftx5410/p/7204672.html 一下子就想了这么多,后续想到了再补,请大家多多指教.其实编程使用什么语言不重要,最重要的是思想,编程的思 ...
- Linux 下误删除恢复,(文件名无法找回)
手贱命令写错了,直接把一个目录下的文件全删了,用下面的方法虽然恢复了,但是还是有几个文件没有找回来...(可以找回,但是要在另一个盘进行操作) 如果不小心用rm –rf xxx删除了文件或目录,在ex ...
- Esper学习之十二:EPL语法(八)
今天的内容十分重要,在Esper的应用中是十分常用的功能之一.它是一种事件集合,我们可以对这个集合进行增删查改,所以在复杂的业务场景中我们肯定不会缺少它.它就是Named Window. 由于本篇篇幅 ...
- 【Spring源码分析系列】bean的加载
前言 以 BeanFactory bf = new XmlBeanFactory(new ClassPathResource("beans.xml"));为例查看bean的加载过 ...
- redmine生产环境搭建
记录信息: 搭建基础应用及mysql 配置svn 配置自动重启 配置API开放 配置邮箱发送 开启数据库ip访问权限 确认用户组管理:配置用户同步 配置部门同步
- C# SignalR 即时通讯 聊天室
一.SignalR简介 SignalR:当所连接的客户端变得可用时服务器代码可以立即向其推送内容,而不是让服务器等待客户端请求新的数据.实现实时服务器与客户端通信.是一个开源.NET 库生成需要实时用 ...
- jquery.fn.extend与jquery.extend用法与区别
jQuery为开发插件提拱了两个方法,分别是: 代码如下 复制代码 jQuery.fn.extend(object); 和 jQuery.extend(object); jQuery.exte ...