Redis基础-redis.conf配置文件梳理及redis目录结构

首先是redis官网:https://redis.io。官网的介绍很简介明了,建议在学习和使用前,首先阅读。(学习东西,第一手资料一定来自官网,那里一定是最权威的)

首先说一下redis,到底是什么。有的人把它当做nosql数据库,有的人把它当做缓存,在大型项目中,有的人把它作为高可用缓存架构的基石,甚至有人把它当成是消息队列来使用。

为了回答这个问题,直接看一下官网是怎么说的

Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes with radius queries and streams. Redis has built-in replication, Lua scripting, LRU eviction, transactions and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster

Redis是一个开源的内存数据结构存储,用作数据库,缓存和消息代理Pub/Sub。

在数据结构上:支持 字符串,散列,列表,集合,带有范围查询的排序集,位图,超级日志,具有半径查询和流的地理空间索引等数据结构。

在功能上:Redis具有内置复制,Lua脚本Lua scripting,LRU驱逐LRU eviction of keys,自动过期Keys with a limited time-to-live,事务Transactions和不同级别的磁盘持久性,并通过Redis Sentinel提供高可用性并使用Redis Cluster自动分区Automatic failover。

 这么多的应用场景和使用,肯定是基于redis所提供的功能特性来的。接下来就对redis进行一次解剖。

  • 安装

    命令安装
        $ tar xzf redis-3.0.7.tar.gz
        $ cd redis-3.0.7
        $ make
            make执行以后主要编译产物在src/redis-server src/redis-cli
        $ make install
            如果想把redis-server直接install到可执行目录/usr/local/bin,还需要执行:$ make install
    运行
        Run Redis with
            $ src/redis-server
        通过内置客户端交互
            $ src/redis-cli

  • 配置文件redis.conf    (这里的配置是从redis-5.0.4版本中的配置文件解读的)

redis的配置文件是一个非常重要的文件,集群的搭建,数据的持久化,主从复制等等都是通过在配置文件中通过配置来开启或者设置个性化功能的。

这里我列举一下,配置文件中涉及的配置有哪些,以及应该引起注意的地方。

需要特别注意
1. 配置文件中涉及到内存容量的配置,需要注意单位和代表的含义。引用官方配置文件中的说明
# Note on units: when memory size is needed, it is possible to specify
# it in the usual form of 1k 5GB 4M and so forth:
#
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes
# units are case insensitive so 1GB 1Gb 1gB are all the same. 另外就是不区分大小写 

redis的redis.conf 文件提供的功能

  • INCLUDES 包含其他配置文件配置。
include /path/to/local.conf
用处:相当于在有一个基础的配置文件上面再添加个性化的配置文件的时候,就可以使用这个命令将个性化的配置文件包含。
  •  MODULES 模块配置
loadmodule /path/to/my_module.so
用处:可以使用外部模块扩展Redis功能,以一定的速度实现新的Redis命令,并具有类似于核心内部可以完成的功能。
  • NETWORK  网络配置
1. bind 指定 redis 只接收来自于该 IP 地址的请求,如果不进行设置,那么将处理所有请求
    # bind 192.168.1.100 10.0.0.1
    # bind 127.0.0.1 ::1

2. protected-mode protected-mode模式
    当没有bind特殊的ip地址以及没有配置密码的时候,protected-mode模式只接受来自127.0.0.1和::1的socket连接
    protected-mode yes

3. port 接受连接的端口
    6379

4. tcp-backlog TCP监听backlog大小
    TCP连接中已完成队列(完成三次握手之后)的长度, 当然此值必须不大于Linux系统定义的/proc/sys/net/core/somaxconn值,默认是511,而Linux的默认参数值是128。当系统并发量大并且客户端速度缓慢的时候,可以将这二个参数一起参考设定。该内核参数默认值一般是128,对于负载很大的服务程序来说大大的不够。一般会将它修改为2048或者更大。在/etc/sysctl.conf中添加:net.core.somaxconn = 2048,然后在终端中执行sysctl -p。
    tcp-backlog 511

5. unixsocket socket设置
    配置unix socket来让redis支持监听本地连接。
    unixsocket /tmp/redis.sock 

6. unixsocketperm 配置unix socket使用文件的权限
    unixsocketperm 700

7. tcp-keepalive TCP keepalive设置
    如果设置不为0,就使用配置tcp的SO_KEEPALIVE值,使用keepalive有两个好处:检测挂掉的对端。降低中间设备出问题而导致网络看似连接却已经与对端端口的问题。在Linux内核中,设置了keepalive,redis会定时给对端发送ack。检测到对端关闭需要两倍的设置值。
    tcp-keepalive 300
  •  GENERAL 通用设置
1. daemonize 设置开启守护进程 
    daemonize no
    
2. supervised 设置是否开启sentinel(哨兵)的监控
    supervised no
    
3. pidfile 设置redis的进程文件 
    pidfile /var/run/redis_6379.pid
    
4. loglevel 日志级别设置
    loglevel notice
    
5. logfile 指定日志输出文件: 
    logfile ""
    
6. syslog-enabled 是否打开记录syslog功能
    syslog-enabled no
    
7. syslog-ident 设置syslog的标识符
    syslog-ident redis
    
8. syslog-facility 日志的来源、设备
    syslog-facility local0
    
9. databases 数据库的数量。
    默认使用的数据库是DB 0。可以通过”SELECT “命令选择一个db:
    databases 16
    
10. always-show-logo 是否总是显示logo
    always-show-logo yes
  •  SNAPSHOTTING 快照相关设置
1. save 设置redis进行数据库镜像的频率
	save 900 1 # 900秒(15分钟)内至少1个key值改变(则进行数据库保存--持久化)
	save 300 10 # 300秒(5分钟)内至少10个key值改变(则进行数据库保存--持久化)
	save 60 10000 # 60秒(1分钟)内至少10000个key值改变(则进行数据库保存--持久化)

2. stop-writes-on-bgsave-error 持久化出现错误后,是否依然进行继续进行工作
	stop-writes-on-bgsave-error yes

3. rdbcompression 使用压缩rdb文件,rdb文件压缩使用LZF压缩算法,yes:压缩,但是需要一些cpu的消耗。no:不压缩,需要更多的磁盘空间
	rdbcompression yes

4. rdbchecksum 是否校验rdb文件,更有利于文件的容错性,但是在保存rdb文件的时候,会有大概10%的性能损耗,所以如果你追求高性能,可以关闭该配置。
	rdbchecksum yes

5. dbfilenamerdb 备份文件名称
	dbfilename dump.rdb

6. dir 数据目录,数据库的写入会在这个目录。rdb、aof文件也会写在这个目录
	dir /opt/app/cluster/node-7001/data
  • REPLICATION 主从复制配置 
1. slaveof 复制选项,slave复制对应的master。
	slaveof <masterip> <masterport>

2. masterauth
	如果master设置了requirepass,那么slave要连上master,需要有master的密码才行。masterauth就是用来配置master的密码,这样可以在连上master后进行认证。
	masterauth <master-password>

3. slave-serve-stale-data
	当从节点失去连接或者复制正在进行,从节点有2种运行方式:
	# yes: 继续响应客户端的请求
	# no: 出去INFO和SLAVEOF命令之外的任何请求都会返回一个错误

4. slave-read-only 从服务器是否只读
	slave-read-only yes #不建议设置成no

5. repl-diskless-sync 是否使用socket方式复制数据。
	目前redis复制提供两种方式,disk和socket。如果新的slave连上来或者重连的slave无法部分同步,就会执行全量同步,master会生成rdb文件。
	有2种方式:
	# disk:master创建一个新的进程把rdb文件保存到磁盘,再把磁盘上的rdb文件传递给slave。
	# socket: master创建一个新的进程,直接把rdb文件以socket的方式发给slave
	disk方式的时候,当一个rdb保存的过程中,多个slave都能共享这个rdb文件。socket的方式就的一个个slave顺序复制。在磁盘速度缓慢,网速快的情况下推荐用socket方式。

6. repl-diskless-sync-delay
	当使用socket复制数据启用的时候,socket复制的延迟时间,如果设置成0表示禁用,默认值是5。
	repl-diskless-sync-delay 5

7. repl-ping-slave-period 从节点根据指定的时间间隔向主节点发起ping请求
	repl-ping-slave-period 10 # 默认10秒

8. repl-timeout 复制连接超时时间
	需要注意的是repl-timeout需要设置一个比repl-ping-slave-period更大的值,不然会经常检测到超时
	repl-timeout 60

9. repl-disable-tcp-nodelay
	是否禁止复制tcp链接的tcp nodelay参数,可传递yes或者no。默认是no
	即使用tcp nodelay。如果master设置了yes来禁止tcp nodelay设置,在把数据复制给slave的时候,会减少包的数量和更小的网络带宽。但是这也可能带来数据的延迟。默认我们推荐更小的延迟,但是在数据量传输很大的场景下,建议选择yes。
	repl-disable-tcp-nodelay no

10. repl-backlog-size 复制缓冲区大小
	保存复制的命令。当从节点在一段时间内断开连接时,主节点会收集数据到backlog这个缓冲区,因此当一个从节点想要重新连接时,通常不需要完全的重新同步,但是部分的重新同步就足够了,只是通过在断开连接的时候传递数据的一部分。默认是1mb
	repl-backlog-size 1mb

11. repl-backlog-ttl 当主节点不再联系从节点,则释放backlog(内存)
	repl-backlog-ttl 3600

12. slave-priority 从节点优先级
	当master不可用,Sentinel会根据slave的优先级选举一个master。最低的优先级的slave,当选master。而配置成0,永远不会被选举
	slave-priority 100

13. min-slaves-to-write
	当健康的slave的个数小于N,mater就禁止写入
	min-slaves-to-write 3

14. min-slaves-max-lag
	延迟小于min-slaves-max-lag秒的slave才认为是健康的slave
	min-slaves-max-lag 10

  • SECURITY 安全设置
1. requirepass 设置密码
	requirepass foobared
  •  CLIENTS 客户端设置
1. maxclients 设置能连上redis的最大客户端连接数量
	maxclients 10000
  • MEMORY MANAGEMENT 内存管理设置
1. maxmemory 
	redis配置的最大内存容量
	maxmemory <bytes>

2. maxmemory-policy 内存达到上限的处理策略
	#volatile-lru:利用LRU算法移除设置过过期时间的key。
	#volatile-random:随机移除设置过过期时间的key。
	#volatile-ttl:移除即将过期的key,根据最近过期时间来删除(辅以TTL)
	#allkeys-lru:利用LRU算法移除任何key。
	#allkeys-random:随机移除任何key。
	#noeviction:不移除任何key,只是返回一个写错误。
	maxmemory-policy noeviction
  • LAZY FREEING
1. lazyfree-lazy-eviction no
2. lazyfree-lazy-expire no
3. lazyfree-lazy-server-del no
4. replica-lazy-flush no
  •  APPEND ONLY MODE APPEND-ONLY-MODE模式设置
1. appendonly 是否以append only模式作为持久化方式
	默认redis使用的是rdb方式持久化,这种方式在许多应用中已经足够用了。但是redis如果中途宕机,会导致可能有几分钟的数据丢失,根据save来策略进行持久化,Append Only File是另一种持久化方式,可以提供更好的持久化特性。Redis会把每次写入的数据在接收后都写入 appendonly.aof 文件,每次启动时Redis都会先把这个文件的数据读入内存里,先忽略RDB文件。
	appendonly no

2. appendfilename AOF 文件名称
	appendfilename "appendonly.aof"

3. appendfsync aof持久化策略的配置
	# no表示不执行fsync,由操作系统保证数据同步到磁盘,速度最快。
	# always表示每次写入都执行fsync,以保证数据同步到磁盘。
	# everysec表示每秒执行一次fsync,可能会导致丢失这1s数据。
	appendfsync everysec

4. no-appendfsync-on-rewrite
	在aof重写或者写入rdb文件的时候,会执行大量IO,此时对于everysec和always的aof模式来说,执行fsync会造成阻塞过长时间,no-appendfsync-on-rewrite字段设置为默认设置为no,如果对延迟要求很高的应用,这个字段可以设置为yes,否则还是设置为no,这样对持久化特性来说这是更安全的选择。设置为yes表示rewrite期间对新写操作不fsync,暂时存在内存中,等rewrite完成后再写入,默认为no,建议yes。Linux的默认fsync策略是30秒。可能丢失30秒数据。
	no-appendfsync-on-rewrite no

5. auto-aof-rewrite-percentage AOF自动重写配置
	当目前aof文件大小超过上一次重写的aof文件大小的百分之多少进行重写,即当aof文件增长到一定大小的时候Redis能够调用bgrewriteaof对日志文件进行重写。当前AOF文件大小是上次日志重写得到AOF文件大小的二倍(设置为100)时,自动启动新的日志重写过程。
	auto-aof-rewrite-percentage 100

6. auto-aof-rewrite-min-size
	设置允许重写的最小aof文件大小,避免了达到约定百分比但尺寸仍然很小的情况还要重写
	auto-aof-rewrite-min-size 64mb

7. aof-load-truncated  
	是否redis在启动时可以加载被截断的AOF文件
	aof-load-truncated yes

8. aof-use-rdb-preamble 
	混合 RDB-AOF 持久化格式
	Redis 4.0 新增了 RDB-AOF 混合持久化格式, 这是一个可选的功能, 在开启了这个功能之后, AOF 重写产生的文件将同时包含 RDB 格式的内容和 AOF 格式的内容, 其中 RDB 格式的内容用于记录已有的数据, 而 AOF 格式的内存则用于记录最近发生了变化的数据, 这样 Redis 就可以同时兼有 RDB 持久化和 AOF 持久化的优点 —— 既能够快速地生成重写文件, 也能够在出现问题时, 快速地载入数据。
	这个功能可以通过aof-use-rdb-preamble 选项进行开启
	aof-use-rdb-preamble no
  • LUA SCRIPTING lua脚本设置

 

  • REDIS CLUSTER 集群设置
1. cluster-enabled 集群开关,默认是不开启集群模式。
	cluster-enabled yes

2. cluster-config-file
	集群配置文件的名称,每个节点都有一个集群相关的配置文件,持久化保存集群的信息。这个文件应该和redis配置文件区别开
	cluster-config-file /opt/app/redis/cluster/node-7001/nodes.conf

3. cluster-node-timeout 
	节点相互连接的超时时间
	cluster-node-timeout 10000

4. cluster-slave-validity-factor
	在进行故障转移的时候,全部slave都会请求申请为master,但是有些slave可能与master断开连接一段时间了,导致数据过于陈旧,这样的slave不应该被提升为master。该参数就是用来判>断slave节点与master断线的时间是否过长。判断方法是:
	#比较slave断开连接的时间和(node-timeout *slave-validity-factor) + repl-ping-slave-period
	#如果节点超时时间为三十秒, 并且slave-validity-factor为10,假设默认的repl-ping-slave-period是10秒,即如果超过310秒slave将不会尝试进行故障转移
	#可能出现由于某主节点失联却没有从节点能顶上的情况,从而导致集群不能正常工作,在这种情况下,只有等到原来的主节点重新回归到集群,集群才恢复运作
	#如果设置成0,则无论从节点与主节点失联多久,从节点都会尝试升级成主节
	cluster-slave-validity-factor 10

5. cluster-require-full-coverage
	当一定比例的键空间没有被覆盖到(就是某一部分的哈希槽没了,有可能是暂时挂了),集群就停止处理任何查询炒作。如果该项设置为no,那么就算请求中只有一部分的键可以被查到,一样可以查询(但是有可能会查不全)
	cluster-require-full-coverage yes
	
6. cluster-migration-barrier
	主节点需要的最小从节点数,只有达到这个数,主节点失败时,它从节点才会进行迁移
	cluster-migration-barrier 1
  • SLOW LOG 慢日志设置
1. slowlog-log-slower-than
	执行时间比slowlog-log-slower-than大的请求记录到slowlog里面,单位是微秒,所以1000000就是1秒。注意,负数时间会禁用慢查询日志,而0则会强制记录所有命令。
	slowlog-log-slower-than 10000

2. slowlog-max-len 慢查询日志长度
		当一个新的命令被写进日志的时候,最老的那个记录会被删掉。这个长度没有限制。只要有足够的内存就行。你可以通过 SLOWLOG RESET 来释放内存
	slowlog-max-len 128
  • LATENCY MONITOR 延迟监控
1. latency-monitor-threshold
	#延迟监控功能是用来监控redis中执行比较缓慢的一些操作,用LATENCY打印redis实例在跑命令时的耗时图表。只记录大于等于下边设置的值的操作。0的话,就是关闭监视。默认延迟监控功能是关闭的,如果你需要打开,也可以通过CONFIG SET命令动态设置。
    latency-monitor-threshold 0
  • EVENT NOTIFICATION 
  • ADVANCED CONFIG 高级配置
1. hash-max-ziplist-entries
	数据量小于等于hash-max-ziplist-entries的用ziplist,大于hash-max-ziplist-entries用hash
	hash-max-ziplist-entries 512

2. hash-max-ziplist-value
	value大小小于等于hash-max-ziplist-value的用ziplist,大于hash-max-ziplist-value用hash
	hash-max-ziplist-value 64

3. list-max-ziplist-size
	数据量小于等于list-max-ziplist-entries用ziplist,大于list-max-ziplist-entries用list
	list-max-ziplist-size -2

4. set-max-intset-entries
	数据量小于等于set-max-intset-entries用iniset,大于set-max-intset-entries用set
	set-max-intset-entries 512

5. zset-max-ziplist-entries
	数据量小于等于zset-max-ziplist-entries用ziplist,大于zset-max-ziplist-entries用zset
	zset-max-ziplist-entries 128

6. zset-max-ziplist-value
	value大小小于等于zset-max-ziplist-value用ziplist,大于zset-max-ziplist-value用zset
	zset-max-ziplist-value 64

7. hll-sparse-max-bytes
	value大小小于等于hll-sparse-max-bytes使用稀疏数据结构(sparse),大于hll-sparse-max-bytes使用稠密的数据结构(dense)
	hll-sparse-max-bytes 3000

8. activerehashing 
	rehash的方式是否启用activerhashing
		hash table是一种高效的数据结构,被广泛的用在key-value存储中,Redis的dict其实就是一个典型的hash table实现。
		rehash是在hash table的大小不能满足需求,造成过多hash碰撞后需要进行的扩容hash table的操作,其实通常的做法确实是建立一个额外的hash table,将原来的hash table中的数据在新的数据中进行重新输入,从而生成新的hash表。redis的 rehash包括了lazy rehashing和active rehashing两种方式
		lazy rehashing:在每次对dict进行操作的时候执行一个slot的rehash
		active rehashing:每100ms里面使用1ms时间进行rehash。
		当你的使用场景中,有非常严格的实时性需要,不能够接受Redis时不时的对请求有2毫秒的延迟的话,把这项配置为no。如果没有这么严格的实时性要求,可以设置为yes,以便能够尽可能快的释放内存。
	activerehashing yes

9. client-output-buffer-limit 
	参数限制分配的缓冲区的大小,防止内存无节制的分配
		redis server以单进程的方式处理接收到的请求,而redis完成请求有些工作比较慢,比如网络IO和磁盘IO等比较慢的操作。redis为了提高处理客户端请求的响应时间,做了很多优化。比如网络io和磁盘io是异步完成、使用后台进程完成bgsave和bgrewriteaof工作,在server端为客户提供读buffer等等。
		client buffer是在server端实现的一个读取缓冲区。redis server在接收到客户端的请求后,把影响结果写入到client buffer中,而不是直接发送给客户端。server把结果写入到client buffer中后,继续处理客户端的其他请求。这样异步处理方式使redis server不会因为网络原因阻塞其他请求的处理
	在客户端与server进行的交互中,每个连接都会与一个buffer关联,此buffer用来队列化亟待被client接受的响应信息.如果client不能及时的消费响应信息,那么buffer将会被不断积压而给server带来内存压力.如果buffer中积压的数据达到阀值,将会导致连接被关闭,buffer被移除.
	客户端类型:
		normarl: 普通客户端
		slave: 从节点作为客户端
		pub/sub: 发布与订阅的客户端
	缓冲区大小限制类型:
		hard limit: 缓冲区大小的硬性限制,即阀值最大值,一旦达到就立刻关闭连接
		soft limit:缓冲去大小的软性限制,即容忍值,它和seconds配合,如果buffer值超过soft且持续时间达到了seconds,也立刻关闭
	client-output-buffer-limit参数限制分配的缓冲区的大小,防止内存无节制的分配。参数的默认值都为0,意思是不做任何限制。
		一般的话最好都要设置这个参数:
			client buffer实际上是占用redis的数据内存空间,redis的最大数据内存空间由maxmemory参数限定。当数据内存空间达到maxmemory参数限定值时,redis会开始evict数据,或者直接提示客户端OOM(out of memory),这种情况下主要发生在客户端执行大批量数据读取, 比如keys*、smembers、lrange、hgetall等操作。如果单次查询的数据太多,导致redis的used memory增长一倍。
		但是client-output-buffer-limit也不能设置太小,这个会导致客户端读取不到数据。
	client-output-buffer-limit normal 0 0 0
	client-output-buffer-limit slave 256mb 64mb 60
	client-output-buffer-limit pubsub 32mb 8mb 60

10. hz  
	redis执行任务的频率为1s除以hz 默认情况下,“hz”设置为10。当Redis空闲时,提高该值将使用更多的CPU,但同时,当有许多密钥同时到期时,将使Redis响应更灵敏,而超时可以更精确地处理。
	hz 10

11. aof-rewrite-incremental-fsync
	在AOF重写的时候,如果打开了aof-rewrite-incremental-fsync开关,系统会每32MB执行一次fsync。这对于把文件写入磁盘是有帮助的,可以避免过大的延迟峰值
	aof-rewrite-incremental-fsync yes
  • ACTIVE DEFRAGMENTATION 
  • 文件结构分析
main:(主程序)
	redis.c redis服务端程序
	redis_cli.c redis客户端程序
  
net:(网络)
	anet.c 作为Server/Client通信的基础封装
	networking.c 网络协议传输方法定义相关的都放在这个文件里面了。
  
struct:(结构体)
	adlist.c 用于对list的定义,它是个双向链表结构
	dict.c 主要对于内存中的hash进行管理
	sds.c 用于对字符串的定义
	sparkline.c 一个拥有sample列表的序列
	t_hash.c hash在Server/Client中的应答操作。主要通过redisObject进行类型转换。
	t_list.c list在Server/Client中的应答操作。主要通过redisObject进行类型转换。
	t_set.c  set在Server/Client中的应答操作。主要通过redisObject进行类型转换。
	t_string.c string在Server/Client中的应答操作。主要通过redisObject进行类型转换。
	t_zset.c zset在Server/Client中的应答操作。主要通过redisObject进行类型转换。
	ziplist.c  ziplist是一个类似于list的存储对象。它的原理类似于zipmap。
	zipmap.c  zipmap是一个类似于hash的存储对象。

event:(事件)
	ae.c 用于Redis的事件处理,包括句柄事件和超时事件。
	ae_epoll.c 实现了epoll系统调用的接口
	ae_evport.c 实现了evport系统调用的接口
	ae_kqueue.c 实现了kqueuex系统调用的接口
	ae_select.c 实现了select系统调用的接口
 
data:(数据操作)
	aof.c 全称为append only file,作用就是记录每次的写操作,在遇到断电等问题时可以用它来恢复数据库状态。
	config.c 用于将配置文件redis.conf文件中的配置读取出来的属性通过程序放到server对象中。
	db.c对于Redis内存数据库的相关操作。
	multi.c用于事务处理操作。
	rdb.c  对于Redis本地数据库的相关操作,默认文件是dump.rdb(通过配置文件获得),包括的操作包括保存,移除,查询等等。
	replication.c 用于主从数据库的复制操作的实现。

tool:(工具)
	bitops.c 位操作相关类
	debug.c 用于调试时使用
	endianconv.c 高低位转换,不同系统,高低位顺序不同
	help.h  辅助于命令的提示信息
	lzf_c.c 压缩算法系列
	lzf_d.c  压缩算法系列
	rand.c 用于产生随机数
	release.c 用于发步时使用
	sha1.c sha加密算法的实现
	util.c  通用工具方法
	crc64.c 循环冗余校验
 
baseinfo:(基本信息)
	asciilogo,c redis的logo显示
	version.h定有Redis的版本号
 
compatible:(兼容)
	fmacros.h 兼容Mac系统下的问题
	solarisfixes.h 兼容solary下的问题

wrapper:(封装类)
	bio.c background I/O的意思,开启后台线程用的
	hyperloglog.c 一种日志类型的
 	intset.c  整数范围内的使用set,并包含相关set操作。
	latency.c 延迟类
	migrate.c 命令迁移类,包括命令的还原迁移等
	notify.c 通知类
	object.c  用于创建和释放redisObject对象
	pqsort.c  排序算法类
	pubsub.c 用于订阅模式的实现,有点类似于Client广播发送的方式。
	rio.c redis定义的一个I/O类
	slowlog.c 一种日志类型的,与hyperloglog.c类似
	sort.c 排序算法类,与pqsort.c使用的场景不同
	syncio.c 用于同步Socket和文件I/O操作。
	zmalloc.c 关于Redis的内存分配的封装实现

 

本篇意在解释官网对redis的定义,基础配置以及目录结构。下一遍,把redis中常用的基本功能进行介绍。

 

转载于:https://my.oschina.net/ChinaHaoYuFei/blog/3066133

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值