设为首页 收藏本站
查看: 1009|回复: 0

[经验分享] redis-10846468

[复制链接]

尚未签到

发表于 2018-11-5 07:28:39 | 显示全部楼层 |阅读模式
  redis 全面介绍:数据保存在磁盘,支持数据的持久化,支持多种数据格式:
  redis 支持的两种文件格式:
  持久化:
  rdb全量数据:把内存中的数据生成快照写入磁盘。
  aof增量请求:把内存中的数据序列化为操作请求 恢复度更高 没读一次都写入内存
  redis 存储分为:内存 磁盘 log文件
  redis的安装方式:
  1. wget https://codeload.github.com/antirez/redis/tar.gz/2.8.21
  tar xvf 2.8.21
  make
  如遇到错误
  cd /deps
  make 错误的代码数据(make hiredis lua jemalloc)返回目录make  下一步如出现同样的错误继续make+错误命令
  make prefix=/usr/local/prefix install
  配置文件脚本:
  mkdir /usr/local/redis/etc
  wget http://www.apelearn.com/study_v2/.redis_conf -O /usr/local/redis/etc/redis.conf 2>/dev/null
  启动文件脚本:
  wget http://www.apelearn.com/study_v2/.redis_init -O /etc/init.d/redis 2>/dev/null
  chmod 755 /etc/init.d/redis   chkconfig --add redis chkconfig redis on
  2. 配置
  mkdir /usr/local/redis/etc/
  vim  /usr/local/redis/etc/redis.conf  //写入如下内容
  daemonize yes  是否以后台daemon方式运行
  pidfile /usr/local/redis/var/redis.pid  pid文件位置
  port 6379  监听的端口号
  timeout 300  请求超时时间
  loglevel debug  log信息级别
  logfile /usr/local/redis/var/redis.log   log文件位置
  databases 16 开启数据库的数量
  save 900 1   保存快照的频率,第一个*表示多长时间,第三个*表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存快照。可设置多个条件。
  save 300 10
  save 60 10000
  rdbcompression yes   是否使用压缩
  dbfilename dump.rdb   数据快照文件名(只是文件名,不包括目录)
  dir /usr/local/redis/var/  数据快照的保存目录(这个是目录)
  appendonly no  是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率
  appendfsync always 如何同步到磁盘(三个选项,分别是每次写都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统自己同步)
  mkdir /usr/local/redis/var/
  chmod 777 /usr/local/redis/var/
  启动redis的命令是:
  /usr/local/redis/bin/redis-server   /usr/local/redis/etc/redis.conf
  我们也可以编写一个redis启动脚本。
  vi /etc/init.d/redis   //加入如下内容:
  #!/bin/sh
  #
  # redis        init file for starting up the redis daemon
  #
  # chkconfig:   - 20 80
  # description: Starts and stops the redis daemon.
  # Source function library.
  . /etc/rc.d/init.d/functions
  name="redis-server"
  basedir="/usr/local/redis"
  exec="$basedir/bin/$name"
  pidfile="$basedir/var/redis.pid"
  REDIS_CONFIG="$basedir/etc/redis.conf"
  [ -e /etc/sysconfig/redis ] && . /etc/sysconfig/redis
  lockfile=/var/lock/subsys/redis
  start() {
  [ -f $REDIS_CONFIG ] || exit 6
  [ -x $exec ] || exit 5
  echo -n $"Starting $name: "
  daemon --user ${REDIS_USER-redis} "$exec $REDIS_CONFIG"
  retval=$?
  echo
  [ $retval -eq 0 ] && touch $lockfile
  return $retval
  }
  stop() {
  echo -n $"Stopping $name: "
  killproc -p $pidfile $name
  retval=$?
  echo
  [ $retval -eq 0 ] && rm -f $lockfile
  return $retval
  }
  restart() {
  stop
  start
  }
  reload() {
  false
  }
  rh_status() {
  status -p $pidfile $name
  }
  rh_status_q() {
  rh_status >/dev/null 2>&1
  }
  case "$1" in
  start)
  rh_status_q && exit 0
  $1
  ;;
  stop)
  rh_status_q || exit 0
  $1
  ;;
  restart)
  $1
  ;;

  >  rh_status_q || exit 7
  $1
  ;;
  force-reload)
  force_reload
  ;;
  status)
  rh_status
  ;;
  condrestart|try-restart)
  rh_status_q || exit 0
  restart
  ;;
  *)
  echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart}"
  exit 2
  esac
  exit $?
  ############到此结束
  因为脚本启动时以redis用户启动的,所以需要增加redis用户
  useradd -s /sbin/nologin redis
  mkdir /usr/local/redis/var
  chmod 777 /usr/local/redis/var
  chmod 755 /etc/init.d/redis
  redis 常用的5中数据类型结构
  string:字符串
  /usr/local/redis/bin/redis-cli
  set key1 aaa   mset key1 aaa key2 bbb key3 ccc
  get key1       mget key1 key2 key3
  exists name 有name值这返回1 无返回0
  del key1 删除一个key 有返回1  无则返回0
  expire key 100  设置key的过期时间
  persist key 取消key的过期时间
  randomkey 随机返回一个key
  type key  返回key的键的类型
  ttl key  key不存在返回-2  存在无剩余时间返回-1
  select 0 选择当前数据库 共 0-15 默认是0 数据库
  move age 1 把键值age移动到1 数据库
  keys * 查看所有的键值
  keys my* 模糊查询所有的键值
  rename oldname  newname 重命名
  incr key(数字) 把字母输出加一
  decr key (数字)  把字母输出减一
  http://pan.baidu.com/s/1sl89ZBn 密码:j4jz
  list:列表
  rpush  list       1 2 3 4   根据取值方向确定
  lpush  list  4 3 2 1   根据取值方向确定
  rpop    从右开始取值 取出的值会流失
  lpop    从左开始取值 取出的值会流失
  lrange   list 0 -1     显示所有设定的值
  linsert  list before 数值 3  //在数值的前面插入一个元素为3
  lset     lista 4 bbb  //把第5个元素修改为bbb
  lindex   lista 0  //查看第1个元素
  lindex   lista 3  //查看第4个元素
  llen     lista  //查看链表中有几个元素
  sorted list:集合并排序
  zadd set2 数值  参数
  zrange 名称 0 -1 显示所有值(正序)
  zrange 名称 0 -1 withscores (正序并显示参数)
  zrevrange 名称 0 -1 显示所有值(反序)
  zrem 名称 参数   删除指定的元素
  zrank 名称  第几个数   //返回元素的索引值,索引值从0开始,按score正向排序
  zrevrank 名称 第几个数  //返回元素的索引值,索引值从0开始,按score反向排序
  zcard zseta  //返回集合中所有元素的个数
  zcount  zseta 1 10  //  返回分值范围1-10的元素个数
  zrangebyscore  zseta 1 10 // 返回分值范围1-10的元素
  zremrangebyrank zseta  0 2  //删除索引范围0-2的元素,按score正向排序
  zremrangebyscore zseta  1 10 //删除分值范围1-10的元素
  set:集合不进行排序
  sadd  set  值
  smembers 取出所有数值
  spop 名称 随机取出一个元素删除
  srem 名称  数值  删除元素
  sdiff 名称1 名称2 求名称的差集元素
  sdiffstore 名称1 名称2 名称3 求差集并存储
  sinter 名称1 名称2 求交集
  sinterstore 名称1 名称2 求交集并存储
  sunion 名称1 名称2 求并集
  sunionstore 名称1 名称2 求并集并存储
  sismember 名称1 元素 判断一个元素属于名称这个集合
  srandmember 名称 随机取出一个元素,但不删除
  hash:本身具有的一些列数值集合。人(年龄 性别)
  hset hash 名称  数值
  hgetall 名称
  hget hash 名称
  hmset user2  name aming age 30 job it    //批量建立键值对
  hmget user2
  hmget user2 name age  job
  hdel user2 job   //删除指定filed
  hkeys user2   //打印所有的key
  hvals user2  //打印所有的values
  hlen user2  //查看hash有几个filed
  redis 配置详解
  通用配置
  config get * 查看所有的配置项
  daemonize yes/no redis以后台或前台方式运行
  pidfile /path/to/redis.pid  指定pid文件存放位置  默认在/var/run/redis.pid
  bind ip 绑定地址 可以多个用空格隔开
  port 6397 指定监听端口
  unixsocket /tmp/redis.sock
  unixsocketperm 755 当监听socket时可以指定权限为755
  timeout 0 设置客服端想服务端的请求超时时间  0表示永不关闭
  tcp-keepalive 0  保活连接 客服端和服务端的三次握手
  loglevel notice  日志级别   debug verbose notice warning
  syslog-ident redis  如果希望日志打印到syslog中  通过syslog-enabled 来控制,和指定syslog中的日志标志。
  syslog-facility local0  指定syslog的设备,可以是user或者local0-local7
  databases 16 设定数据库的总数量,select n 选定数据库
  快照配置rdb
  save 900 1
  save 300 10
  save 60 10000
  save “”
  stop-writes-on-bgsave-error yes 在磁盘写入出错的情况下 redis停止写的操作
  rdbcompression yes 是否要压缩
  rdbchecksum yes 是否进行数据校验
  dbfilename dump.rdb 定义快照文件的名字
  dis ./ 定义快照文件存储路径
  redis安全相关配置
  requirepass 设定登陆密码     redis-cli -a 密码
  masterauth 主服务器的秘密(redis主从配置)
  slaveof 主服务器ip 6397  从服务器上配置文件中添加。
  rename-command config  ab  将配置命令改为ab 可以避免误操作,但为了aof的持久化,建议不开启此功能
  rename-commamd config “” 禁掉config命令
  限制相关配置
  maxclients 限制客服端的最大连接数
  maxmemory 设定最大内存使用数
  maxmemory-policy volatile-lru 设定内存移除规则
  maxmemory-samples 3
  AOF持久化相关配置
  appendonly no  #如果是no,则开启aof持久化
  appendfilename “appendonly.aof” # 指定aof文件名字
  appendfsync everysec #指定fsync()调用模式,有三种no(不调用fsync),always(每次写都会调用fsync),everysec(每秒钟调用一次fsync)。第一种最快,第二种数据最安全,但性能会差一些,第三种为这种方案,默认为第三种。
  no-appendfsync-on-rewrite no  # 设置yes,可避免当写入量非常大时的磁盘io阻塞
  auto-aof-rewrite-percentage 10 #规定什么情况下会触发aof重写。该值为一个比例,10表示当aof文件增幅达到10%时则会触发重写机制。
  uto-aof-rewrite-min-size 64mb #重写会有一个条件,就是不能低于64Mb
  慢日志的相关配置
  slowlog-log-slower-than 10000 #慢于10000ms则记录日志
  slowlog-max-len 128  #日志长度
  redis主从其他相关配置
  两台服务器 master   slave 分别按照redis
  master配置文件不用动   slave配置文件加上:slaveof +主配置ip:端口   masterauth+ 主password  如果主上设置了密码要加上这一行。
  slave-read-only yes  //让从只读
  repl-ping-slave-period 10  //设置slave向master发起ping的频率,每10s发起一次
  repl-timeout 60 //设置slave ping不通master多少s后就超时
  repl-disable-tcp-nodelay no //是否开启tcp_nodelay,开启后将会使用更少的带宽,但会有延迟,所以建议关闭
  repl-backlog-size 1mb //同步队列的长度,backuplog是master的一个缓冲区,主从断开后,master会先把数据写到缓冲区,slave再次连接会从缓冲区中同步数据
  repl-backlog-ttl 3600  //主从断开后,缓冲区的有效期,默认1小时
  slave-priority 100 //多个slave是可以设置优先级的,数值越小优先级越高,应用于集群中,支持slave切换为master,优先级最高的才会切换
  min-slaves-to-write 3  //和下面的一起使用,它的意思是master发现有超过3个slave的延迟高于10s,那么master就会暂时停止写操作。这两个数值任何一个为0,则关闭该功能,默认第一数值是0。
  min-slaves-max-lag 10
  dbsize  //返回当前数据库中key的数目
  info  //返回redis数据库状态信息
  flushdb //清空当前数据库中所有的键
  flushall    //清空所有数据库中的所有的key


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-630834-1-1.html 上篇帖子: Redis(五):关于过期键(3)持久化及主从复制对过期键的处理 下篇帖子: Redis(四):持久化之---AOF持久化的配置和原理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表