redis缓存数据库详解(一):config文件详解

作为一个稀有的Java妹子,所写的所有博客都只是当作自己的笔记,留下证据自己之前是有用心学习的~哈哈哈哈(如果有不对的地方,也请大家指出,不要悄悄咪咪的不告诉我)

1.redis是什么?

1.redis是一种可以高效存取的数据库,支持多种数据结构,比如字符串、集合、hash等等。
2.redis是把数据存放在内存里,从而使得数据的读写都是发生在内存里,速度十分的快,然后通过一定的机制持久化到磁盘。
3.虽然redis被叫做数据库,但是与mysql这种关系型数据库不同,redis的读写不是通过sql,而是通过其独有的方法设置的,所以redis也被成为是nosql数据库,还有许多nosql数据库,比如mongodb,memcached等等。
4.业务场景里有很多可以使用redis,比如点赞数,关注列表,粉丝列表等热点数据,还可以用来做分布式锁。

2.redis配置文件介绍

这里就跳过下载,可以自行去redis官网下载,下载后直接解压就可以了。
redis的配置文件是redis.config,打开配置文件,可以看到以下密密麻麻的属性值

################################# GENERAL #####################################

# 默认情况下 redis 不是作为守护进程运行的,如果你想让它在后台运行,你就把它改成 yes。
# 当redis作为守护进程运行的时候,它会写一个 pid 到 /var/run/redis.pid 文件里面。
daemonize no

# 当redis作为守护进程运行的时候,它会把 pid 默认写到 /var/run/redis.pid 文件里面,
# 但是你可以在这里自己制定它的文件位置。
pidfile /var/run/redis_6379.pid

# 定义日志级别。
# 可以是下面的这些值:
# debug (适用于开发或测试阶段)
# verbose (many rarely useful info, but not a mess like the debug level)
# notice (适用于生产环境)
# warning (仅仅一些重要的消息被记录)
loglevel notice

# 指定日志文件的位置
logfile ""

# 要想把日志记录到系统日志,就把它改成 yes,
# 也可以可选择性的更新其他的syslog 参数以达到你的要求
# syslog-enabled no

# 设置 syslog 的 identity。
# syslog-ident redis

# 设置 syslog 的 facility,必须是 USER 或者是 LOCAL0-LOCAL7 之间的值。
# syslog-facility local0

# 设置数据库的数目。
# 默认数据库是 DB 0,你可以在每个连接上使用 select <dbid> 命令选择一个不同的数据库,
# 但是 dbid 必须是一个介于 0 到 databasees - 1 之间的值
databases 16

################################## NETWORK #####################################

# 默认情况下,redis 在 server 上所有有效的网络接口上监听客户端连接。
# 你如果只想让它在一个网络接口上监听,那你就绑定一个IP或者多个IP。
#
# 示例,多个IP用空格隔开:
#
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1
bind 0.0.0.0

# 监听端口号,默认为 6379,如果你设为 0 ,redis 将不在 socket 上监听任何客户端连接。
port 6379

# TCP 监听的最大容纳数量
#
# 在高并发的环境下,你需要把这个值调高以避免客户端连接缓慢的问题。
# Linux 内核会一声不响的把这个值缩小成 /proc/sys/net/core/somaxconn 对应的值,
# 所以你要修改这两个值somaxconn and tcp_max_syn_backlog才能达到你的预期。
tcp-backlog 511

# 指定在一个 client 空闲多少秒之后关闭连接(0 就是不管它)
timeout 0

################################ SNAPSHOTTING  ################################
#
# 存 DB 到磁盘:
#
#   格式:save <间隔时间(秒)> <写入次数>
#
#   根据给定的时间间隔和写入次数将数据保存到磁盘
#
#   下面的例子的意思是:
#   900 秒内如果至少有 1 个 key 的值变化,则保存
#   300 秒内如果至少有 10 个 key 的值变化,则保存
#   60 秒内如果至少有 10000 个 key 的值变化,则保存
#  
#   注意:你可以注释掉所有的 save 行来停用保存功能。
#   也可以直接一个空字符串来实现停用:
#   save ""

save 900 1
save 300 10
save 60 10000

# 默认情况下,如果 redis 最后一次的后台保存失败,redis 将停止接受写操作,
# 这样以一种强硬的方式让用户知道数据不能正确的持久化到磁盘,
# 否则就会没人注意到灾难的发生。
#
# 如果后台保存进程重新启动工作了,redis 也将自动的允许写操作。
#
# 然而你要是安装了靠谱的监控,你可能不希望 redis 这样做,那你就改成 no 好了。
stop-writes-on-bgsave-error yes

# 是否在 dump .rdb 数据库的时候使用 LZF 压缩字符串
# 默认都设为 yes
# 如果你希望保存子进程节省点 cpu ,你就设置它为 no ,
# 不过这个数据集可能就会比较大
rdbcompression yes

# 是否校验rdb文件
rdbchecksum yes

# 设置 dump 的文件位置
dbfilename dump.rdb

# 工作目录
# 例如上面的 dbfilename 只指定了文件名,
# 但是它会写入到这个目录下。这个配置项一定是个目录,而不能是文件名。
dir ./

################################## SECURITY ###################################

# 设置redis的连接密码,默认是没有密码的,但是实际中是需要设置的
# requirepass foobared

################################### CLIENTS ####################################

# 设置同时连接的最大客户端数。默认情况下此限制设置为10000个客户端
# 一旦达到最大限制,redis 将关闭所有的新连接
# 并发送一个‘max number of clients reached’的错误。
# maxclients 10000

############################## MEMORY MANAGEMENT ################################

# 如果你设置了这个值,当缓存的数据容量达到这个值, redis 将根据你选择的
# eviction 策略来移除一些 keys。
# 如果 redis 不能根据策略移除 keys ,或者是策略被设置为 ‘noeviction’,
# redis 将开始响应错误给命令,如 set,lpush 等等,
# 并继续响应只读的命令,如 get
# maxmemory <bytes>

############################## APPEND ONLY MODE ###############################

# 默认情况下,Redis在磁盘上异步转储数据集。这个模式是在很多应用程序中都足够好,但是Redis进程
#有问题,或者断电可能会导致几分钟的写操作丢失(取决于配置的保存点)。Append Only文件是另一种
#持久性模式,它提供更耐用。例如,使用默认的数据fsync策略(请参阅后面的配置文件)Redis在戏剧
#性的事件,比如服务器断电,或者如果发生了什么事情Redis进程本身会出错,但操作系统是仍然正常运
#行。可以同时启用AOFRDB持久性,而不会出现问题。如果在启动时启用了AOF,Redis将加载AOF,即
#文件有更好的耐久性保证。
appendonly no

# 设置存放aof的文件名
appendfilename "appendonly.aof"

# 配置aof持久化数据策略,
# always:每次有数据修改发生时都会写入AOF文件(安全但是费时)
# everysec:每秒钟同步一次,该策略为AOF的缺省策略。
# no:从不同步。高效但是数据不会被持久化。
# appendfsync always
appendfsync everysec
# appendfsync no

# 主进程写入aof文件和当aof文件过大,自动重写两者都发生的时候,因为重写是把旧的文件重新
#写到新的文件中,涉及大量的磁盘操作,就会阻塞主线程的读写,该参数设为yes就是不同步数据,
#这样就可以保证redis的读写没有延迟,但可能会出现数据丢失的情况;设置为no就是当上述情况
#发生会有一点延迟,不过不会出现丢失数据的情况。
no-appendfsync-on-rewrite no

# 设置aof文件重写的条件
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

#aof文件有时会出现末尾被截断的情况,设置该参数为yes表示当启动redis加载aof文件时,不会报错,会一直加载到被截断的位置的所有数据到内存,设为no就是不能启动redis,必须使用“redis check AOF”实用程序修复AOF文件
aof-load-truncated yes

# When rewriting the AOF file, Redis is able to use an RDB preamble in the
# AOF file for faster rewrites and recoveries. When this option is turned
# on the rewritten AOF file is composed of two different stanzas:
#
#   [RDB file][AOF tail]
#
# When loading Redis recognizes that the AOF file starts with the "REDIS"
# string and loads the prefixed RDB file, and continues loading the AOF
# tail.
aof-use-rdb-preamble yes


############################### LUA SCRIPTING  ###############################

# lua脚本执行的最长时间,其设置为0或负值,以便在没有警告的情况下无限执行。
lua-time-limit 5000

################################ REDIS CLUSTER  ###############################

# 普通的Redis实例不能是Redis集群的一部分;需要将redis加入集群可以开启该属性
# cluster-enabled yes

# 每个群集节点都有一个群集配置文件。这个文件不是打算手工编辑。它由Redis节点创建和更新。
#每个Redis集群节点都需要不同的集群配置文件。确保在同一系统中运行的实例没有重叠的群集配置文件名。
# cluster-config-file nodes-6379.conf

# 节点多久没被连上将其设定为失效状态
# cluster-node-timeout 15000

# 当主节点出现故障时,设置副本节点进行故障转移的有效因子
# 为了获得最大的可用性,可以设置副本有效性因子值为0,这意味着副本将始终尝试故障转移不管他们最后一次和主人互动。
#零是唯一能够保证当所有分区恢复时群集将始终能够继续。
# cluster-replica-validity-factor 10

# Cluster replicas are able to migrate to orphaned masters, that are masters
# that are left without working replicas. This improves the cluster ability
# to resist to failures as otherwise an orphaned master can't be failed over
# in case of failure if it has no working replicas.
#
# Replicas migrate to orphaned masters only if there are still at least a
# given number of other working replicas for their old master. This number
# is the "migration barrier". A migration barrier of 1 means that a replica
# will migrate only if there is at least 1 other working replica for its master
# and so forth. It usually reflects the number of replicas you want for every
# master in your cluster.
#
# Default is 1 (replicas migrate only if their masters remain with at least
# one replica). To disable migration just set it to a very large value.
# A value of 0 can be set but is useful only for debugging and dangerous
# in production.
#
# cluster-migration-barrier 1

# By default Redis Cluster nodes stop accepting queries if they detect there
# is at least an hash slot uncovered (no available node is serving it).
# This way if the cluster is partially down (for example a range of hash slots
# are no longer covered) all the cluster becomes, eventually, unavailable.
# It automatically returns available as soon as all the slots are covered again.
#
# However sometimes you want the subset of the cluster which is working,
# to continue to accept queries for the part of the key space that is still
# covered. In order to do so, just set the cluster-require-full-coverage
# option to no.
#
# cluster-require-full-coverage yes

# 如果将此选项设置为“是”,则会阻止副本尝试对其进行故障转移
# cluster-replica-no-failover no

################################## SLOW LOG ###################################

# 慢日志时间设置,执行时间超过的会记录到慢日志中
slowlog-max-len 128
################################ LATENCY MONITOR ##############################

# Redis延迟监控子系统对不同的操作进行采样在运行时,以便收集与Redis实例的延迟。
# 默认情况下,延迟监视被禁用,因为大多数情况下不需要它
latency-monitor-threshold 0

############################# LAZY FREEING ####################################

# redis的删除有两种,一种是阻塞的,另一种是非阻塞的。默认的是阻塞的,del。在使用del删除数据时,服务器会把与之相关的都删除掉,这段时间是阻塞的,如果关联的数据很多可能会需要几秒的时间;非阻塞的有UNLINK等。
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
replica-lazy-flush no

3.redis的客户端和服务端

安装好后,进入解压后的目录,然后使用redis-server命令启动redis,启动后服务端就会显示以下的信息:注意:如果修改了配置文件,启动时一定要指定配置文件,不然修改的配置都不起效,redis-server redis.conf
在这里插入图片描述
然后再另外打开一个连接终端,输入redis-cli,连接刚才启动好的redis:
在这里插入图片描述

下一篇将会介绍redis的数据结构以及对应的命令。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值