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 ...
随机推荐
- Linux怎样创建FTP服务器--修改用户默认目录
在创建FTP服务器之有先命令: ps -ef |grep vsftpd 查一下系统有没有安装vsftpd这个服务器,如果出现如下图所示的界面说明没有安装. 然后再执行:yum install ...
- 微信公众号access_token的获取与存储
如果是一个用户触发,那么只要将access_token放在数据库,文件,nosql就行,取时判断时间是否过期,过期重新去微信获取再放入. 如果是很多用户,多进程并发,特别是分布式那种架构呢?进程A判断 ...
- css媒体查询来书写二倍图三倍图设置
@media (-webkit-min-device-pixel-ratio: 2){} @media (-webkit-min-device-pixel-ratio: 3){}
- Bootstrap学习总结笔记(24)-- 基于BootstrapValidator的Form表单验证
Form表单进行数据验证是十分必要的,我们可以自己写JS脚本或者使用JQuery Validate 插件来实现.对于Bootstrap而言,利用BootstrapValidator来做Form表单验证 ...
- 浏览器缓存机制介绍 + 常用 http 状态码
浏览器缓存分为两种, 强制缓存 与 协商缓存, https://www.pass4lead.com/300-209.htmlhttps://www.pass4lead.com/300-320.ht ...
- 怎么使用jstack精确找到异常代码
1.代码demo //一个CPU密集型线程的demo: package chapter1; public class FindJavaThreadInTaskManager { public stat ...
- tar解压包的时候出现错误 gzip: stdin: not in gzip format
在Linux环境下,通过tar -zxvf 命令解压文件时遇到”gzip: stdin: not in gzip format“等错误:如图所示 root@cmfchina:/usr/java# ta ...
- [原]linux下将网卡设置为混杂模式
设置为混杂模式ifconfig eth2 promisc取消设置ifconfig eth2 -promisc ------------------------------------------ 下面 ...
- Linux SVN 服务器
一. SVN 简介 Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据. 这些数据放置在一个中央资料档案库 (repository) 中 ...
- Kerberos认证与攻击学习总结
0.背景 聆听了n1nty大佬(90后黑客代表)的谆谆指导,学习了n1nty大佬的基本操作,决定总结一下,做一个简要的读书笔记,也把之前自己记录的关于Windows的安全的一些博客能够串联起来.所以首 ...