Resid总结

Redis是什么?

Redis:REmote DIctionary Server(远程字典服务器)

是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内存数据库,基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSql数据库之一,也被人们称为数据结构服务器。

Redis与其他key-value缓存产品的有以下三个特点:

Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用

Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储

Redis支持数据的备份,即master-slave模式的数据备份

Redis启动后杂项基础知识讲解

1、单进程:单进程模型来处理客户端的请求。对读写等事件的响应是通过对epoll函数的包装来做到的。Redis的实际处理速度完全依靠主进程的执行效率。Epoll是Linux内核为处理大批量文件描述符而作了改进的epoll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。

2、默认16个数据库,类似数组下表从零开始,初始默认使用零号库

3、Select命令切换数据库

4、Dbsize查看当前数据库的key的数量

5、Flushdb:清空当前库     Flusall:通杀全部库

6、统一密码管理,16个库都是同样密码,要么都OK要么一个也连接不上

7、redis索引都是从零开始

Redis的五大数据类型

String(字符串)、Hash(哈希,类似java里的Map)、List(l列表)、Set(集合)、Zset(sorted set :有序集合)

Redis的配置文件解析

1、Units单位

Resid总结_第1张图片

配置大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bit, 对大小写不敏感

2、INClUDES包含

Resid总结_第2张图片

  和我们的Struts2配置文件类似,可以通过includes包含,redis.conf可以作为总闸,包含其他

3、GENERAl通用

Daemonize:

  • 1、daemonize介绍

    • A、redis.conf配置文件中daemonize守护线程,默认是NO。
    • B、daemonize是用来指定redis是否要用守护线程的方式启动。
  • 2、daemonize 设置yes或者no区别

    • daemonize:yes:redis采用的是单进程多线程的模式。当redis.conf中选项daemonize设置成yes时,代表开启守护进程模式。在该模式下,redis会在后台运行,并将进程pid号写入至redis.conf选项pidfile设置的文件中,此时redis将一直运行,除非手动kill该进程。
    • daemonize:no: 当daemonize选项设置成no时,当前界面将进入redis的命令行界面,exit强制退出或者关闭连接工具(putty,xshell等)都会导致redis进程退出。

Pidfile 

Port  

Tcp-backlog:设置tcp的backlog,backlog其实是一个连接队列,backlog队列总和=未完成三次握手队列 + 已经完成三次握手队列。在高并发环境下你需要一个高backlog值来避免慢客户端连接问题。注意Linux内核会将这个值减小到/proc/sys/net/core/somaxconn的值,所以需要确认增大somaxconn和tcp_max_syn_backlog两个值来达到想要的效果)、  

Timeout

Bind   

Tcp-keepalive:单位为秒,如果设置为0,则不会进行Keepalive检测,建议设置成60)

Loglevel、Logfile

Syslog-enabled:是否把日志输出到syslog中

Syslog-ident:指定syslog里的日志标志

Syslog-facility:指定syslog设备,值可以是USER或LOCAL0-LOCAL7

Databases

4、SNAPSHOTTING快照

1、save

Resid总结_第3张图片

RDB是整个内存的压缩过的Snapshot,RDB的数据结构,可以配置复合的快照触发条件,
默认
是1分钟内改了1万次,
或5分钟内改了10次,
或15分钟内改了1次。

save " "    如果想禁用RDB持久化的策略,只要不设置任何save指令,或者给save传入一个空字符串参数也可以

2、Stop-writes-on-bgsave-error

如果配置成no,表示你不在乎数据不一致或者有其他的手段发现和控制

3、rdbcompression

rdbcompression:对于存储到磁盘中的快照,可以设置是否进行压缩存储。如果是的话,redis会采用
LZF算法进行压缩。如果你不想消耗CPU来进行压缩的话,可以设置为关闭此功能

4、rdbchecksum

Resid总结_第4张图片

rdbchecksum:在存储快照后,还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约
10%的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能 

5、SECURITY安全:访问密码的查看、设置和取消

Resid总结_第5张图片

6、LIMITS限制

Maxclients:设置redis同时可以与多少个客户端进行连接。默认情况下为10000个客户端。当你
无法设置进程文件句柄限制时,redis会设置为当前的文件句柄限制值减去32,因为redis会为自
身内部处理逻辑留一些句柄出来。如果达到了此限制,redis则会拒绝新的连接请求,并且向这
些连接请求方发出“max number of clients reached”以作回应。

Maxmemory:设置redis可以使用的内存量。一旦到达内存使用上限,redis将会试图移除内部数据,移除规则可以通过maxmemory-policy来指定。如果redis无法根据移除规则来移除内存中的数据,或者设置了“不允许移除”,那么redis则会针对那些需要申请内存的指令返回错误信息,比如SET、LPUSH等。但是对于无内存申请的指令,仍然会正常响应,比如GET等。如果你的redis是主redis(说明你的redis有从redis),那么在设置内存使用上限时,需要在系统中留出一些内存空间给同步队列缓存,只有在你设置的是“不移除”的情况下,才不用考虑这个因素

Maxmemory-policy:

(1)volatile-lru:使用LRU算法移除key,只对设置了过期时间的键
(2)allkeys-lru:使用LRU算法移除key
(3)volatile-random:在过期集合中移除随机的key,只对设置了过期时间的键
(4)allkeys-random:移除随机的key
(5)volatile-ttl:移除那些TTL值最小的key,即那些最近要过期的key
(6)noeviction:不进行移除。针对写操作,只是返回错误信息

Maxmemory-samples:设置样本数量,LRU算法和最小TTL算法都并非是精确的算法,而是估算值,所以你可以设置样本的大小,redis默认会检查这么多个key并选择其中LRU的那个

7、APPEND ONLY MODE追加

appendonly、appendfilename

Appendfsync:

Always:同步持久化 每次发生数据变更会被立即记录到磁盘  性能较差但数据完整性比较好

Everysec:出厂默认推荐,异步操作,每秒记录   如果一秒内宕机,有数据丢失

No

Resid总结_第6张图片

No-appendfsync-on-rewrite:重写时是否可以运用Appendfsync,用默认no即可,保证数据安全性。

Auto-aof-rewrite-min-size:设置重写的基准值

Auto-aof-rewrite-percentage:设置重写的基准值

你可能感兴趣的:(Resid总结)