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
相关推荐
Ai 编码助手12 分钟前
MySQL中distinct与group by之间的性能进行比较
数据库·mysql
陈燚_重生之又为程序员28 分钟前
基于梧桐数据库的实时数据分析解决方案
数据库·数据挖掘·数据分析
caridle29 分钟前
教程:使用 InterBase Express 访问数据库(五):TIBTransaction
java·数据库·express
白云如幻31 分钟前
MySQL排序查询
数据库·mysql
萧鼎33 分钟前
Python并发编程库:Asyncio的异步编程实战
开发语言·数据库·python·异步
^velpro^35 分钟前
数据库连接池的创建
java·开发语言·数据库
荒川之神40 分钟前
ORACLE _11G_R2_ASM 常用命令
数据库·oracle
IT培训中心-竺老师1 小时前
Oracle 23AI创建示例库
数据库·oracle
小白学大数据1 小时前
JavaScript重定向对网络爬虫的影响及处理
开发语言·javascript·数据库·爬虫
time never ceases1 小时前
使用docker方式进行Oracle数据库的物理迁移(helowin/oracle_11g)
数据库·docker·oracle