redis 一 认识redis

认识redis

  • redis 是什么
  • redis 是一款开源的非关系型数据库,我们可以得到他的源码。
    redis 基于键值对进行存储服务 类似于java map、python dict
    redis 支持多种数据类型
  • redis 特性
  • 轻量级 最初版本只有2万行代码
    速度快 10W OPS(官方) C语言实现
    持久化 拥有两种持久化方式、断电不丢失数据
    支持多种语言
    主从复制
    高可用、分布式
  • redis 使用场景
  • 缓存服务器
    消息队列
    计数器
    社交网络
  • redis 安装
  1、yum 安装
  [root@redis1 ~]# yum install -y epel-release
  [root@redis1 ~]# yum install -y redis

  2、编译安装
  # 部署redis 环境
  [root@redis-master ~]# mkdir -p /data/application     ---创建工作目录
  [root@redis-master ~]# wget http://download.redis.io/releases/redis-4.0.9.tar.gz   ---下载redis
  [root@redis-master ~]# tar xzf redis-4.0.9.tar.gz -C /data/application/    ---解压
  [root@redis-master ~]# cd /data/application/
  [root@redis-master application]# mv redis-4.0.9/ redis 
  [root@redis-master application]# cd redis/
  [root@redis-master redis]# yum install -y gcc make  #安装编译工具
  [root@redis-master redis]# make
  注:如果报错请将刚才解压的安装包删除掉,再次重新解压并进行make安装即可。
  [root@redis-master redis]# cp redis.conf redis.conf.bak
  [root@redis-master redis]# vim redis.conf     ---修改如下
  bind 192.168.246.202  #只监听内网IP
  daemonize yes     #开启后台模式将on改为yes
  timeout 300      #连接超时时间
  port 6379                      #端口号
  dir /data/application/redis/data  #本地数据库存放持久化数据的目录该目录-----需要存在
  pidfile /var/run/redis_6379.pid  #定义pid文件
  logfile /var/log/redis.log  #定义log文件
  创建存放数据的目录
  [root@redis-master redis]# mkdir /data/application/redis/data
  配置redis为systemctl启动
  [root@redis-master redis]# cd /lib/systemd/system
  [root@redis-master system]# vim redis.service
  [Unit]
  Description=Redis
  After=network.target

  [Service]
  ExecStart=/data/application/redis/src/redis-server /data/application/redis/redis.conf  --daemonize no
  ExecStop=/data/application/redis/src/redis-cli -h 127.0.0.1 -p 6379 shutdown

  [Install]
  WantedBy=multi-user.target

  参数详解:
  • [Unit] 表示这是基础信息 
  • Description 是描述
  • After 是在那个服务后面启动,一般是网络服务启动后启动

  • [Service] 表示这里是服务信息 
  • ExecStart 是启动服务的命令
  • ExecStop 是停止服务的指令

  • [Install] 表示这是是安装相关信息 
  • WantedBy 是以哪种方式启动:multi-user.target表明当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。
  启动服务:
  [root@redis-master system]# systemctl daemon-reload
  [root@redis-master system]# systemctl start redis.service
  • redis 配置说明
  [root@redis1 ~]# cat /etc/redis.conf |grep -v '^#'|grep -v '^$'
  #绑定地址:
  bind 127.0.0.1
  #安全模式 当开启后,禁止公网访问redis。它启用的条件有两个,第一是没有使用bind,第二是没有设置访问密码。
  protected-mode yes
  #监听端口
  port 6379
  tcp-backlog 511
  #超时时间,当客户端闲置多少秒后关闭连接,如果设置为0表示关闭该功能。
  timeout 0
  #单位是秒,表示将周期性的使用SO_KEEPALIVE检测客户端是否还处于健康状态,避免服务器一直阻塞,官方给出的建议值是300S
  tcp-keepalive 300
  #是否已守护进程启动
  daemonize no
  #可以通过upstart和systemd管理Redis守护进程,这个参数是和具体的操作系统相关的。
  supervised no
  #pid文件位置
  pidfile /var/run/redis_6379.pid
  #日志级别
  loglevel notice
  logfile /var/log/redis/redis.log
  #数据库个数,可以通过select 切换 0-15
  databases 16
  #保存数据到磁盘。格式是:save <seconds> <changes> ,含义是在 seconds 秒之后至少有 changes个keys 发生改变则保存一次。
  save 900 1
  save 300 10
  save 60 10000
  #如果最后一次保存失败就停止写操作,如果监控得当,此处可以修改为no
  stop-writes-on-bgsave-error yes
  #是否在dump.rdb数据库的时候压缩字符串,默认设置为yes。如果你想节约一些cpu资源的话,可以把它设置为no,这样的话数据集就可能会比较大。
  rdbcompression yes
  #是否校验rdb文件的完整性
  rdbchecksum yes
  #rdb方式文件名
  dbfilename dump.rdb
  #备份文件位置
  dir /var/lib/redis
  #当一个slave与master失去联系时,或者复制正在进行的时候,slave应对请求的行为:1) 如果为 yes(默认值) ,slave 仍然会应答客户端请求,但返回的数据可能是过时,或者数据可能是空的在第一次同步的时候;2) 如果为 no ,在你执行除了 info 和 salveof 之外的其他命令时,slave 都将返回一个 "SYNC with master in progress" 的错误。
  slave-serve-stale-data yes
  #从库只读
  slave-read-only yes
  #主从数据复制是否使用无硬盘复制功能。无磁盘diskless方式适合磁盘读写速度慢但网络带宽非常高的环境。
  repl-diskless-sync no
  #无磁盘diskless方式适合磁盘读写速度慢但网络带宽非常高的环境。
  repl-diskless-sync-delay 5
  #slave端向server端发送pings的时间区间设置,默认为10秒
  repl-disable-tcp-nodelay no
  #哨兵机制选举的优先级,越小优先级越高,0为放弃选举,默认为100
  slave-priority 100
  #aof持久化配置,默认关闭
  appendonly no
  appendfilename "appendonly.aof"
  #aof文件刷新的频率。有三种:
  ##1)no 依靠OS进行刷新,redis不主动刷新AOF,这样最快,但安全性就差。
  ##2) always 每提交一个修改命令都调用fsync刷新到AOF文件,非常非常慢,但也非常安全。
  ##3) everysec 每秒钟都调用fsync刷新到AOF文件,很快,但可能会丢失一秒以内的数据。
  appendfsync everysec
  #指定是否在后台aof文件rewrite期间调用fsync,默认为no,表示要调用fsync(无论后台是否有子进程在刷盘)。Redis在后台写RDB文件或重写AOF文件期间会存在大量磁盘IO,此时,在某些linux系统中,调用fsync可能会阻塞。
  no-appendfsync-on-rewrite no
  #aof 文件重写机制
  auto-aof-rewrite-percentage 100
  auto-aof-rewrite-min-size 64mb
  #redis在启动时可以加载被截断的AOF文件,而不需要先执行 redis-check-aof 工具。
  aof-load-truncated yes
  lua-time-limit 5000
  slowlog-log-slower-than 10000
  slowlog-max-len 128
  latency-monitor-threshold 0
  notify-keyspace-events ""
  hash-max-ziplist-entries 512
  hash-max-ziplist-value 64
  list-max-ziplist-size -2
  list-compress-depth 0
  set-max-intset-entries 512
  zset-max-ziplist-entries 128
  zset-max-ziplist-value 64
  hll-sparse-max-bytes 3000
  activerehashing yes
  client-output-buffer-limit normal 0 0 0
  client-output-buffer-limit slave 256mb 64mb 60
  client-output-buffer-limit pubsub 32mb 8mb 60
  hz 10
  aof-rewrite-incremental-fsync yes
相关推荐
看山还是山,看水还是。38 分钟前
MySQL 管理
数据库·笔记·mysql·adb
fishmemory7sec44 分钟前
Koa2项目实战2(路由管理、项目结构优化)
数据库·mongodb·koa
momo小菜pa1 小时前
【MySQL 09】表的内外连接
数据库·mysql
Jasonakeke1 小时前
【重学 MySQL】四十九、阿里 MySQL 命名规范及 MySQL8 DDL 的原子化
数据库·mysql
程序猿小D1 小时前
第二百六十九节 JPA教程 - JPA查询OrderBy两个属性示例
java·开发语言·数据库·windows·jpa
小宇成长录1 小时前
Mysql:数据库和表增删查改基本语句
数据库·mysql·数据库备份
团儿.2 小时前
解锁MySQL高可用新境界:深入探索MHA架构的无限魅力与实战部署
数据库·mysql·架构·mysql之mha架构
程序猿小D2 小时前
第二百六十七节 JPA教程 - JPA查询AND条件示例
java·开发语言·前端·数据库·windows·python·jpa
权^3 小时前
MySQL--聚合查询、联合查询、子查询、合并查询(上万字超详解!!!)
大数据·数据库·学习·mysql
wclass-zhengge3 小时前
Redis篇(最佳实践)(持续更新迭代)
redis·缓存·bootstrap