Redis教程

二、Redis配置

本文主要是介绍二、Redis配置,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

二、Redis配置

1、redis配置文件
  • 单位(#Units#) : 配置文件的开头部分定义了一些基本的度量单位,只支持bytes,不支持bit,大小写不敏感
  • 包含(#INCLUDE#):多实例的情况,可以把共用的配置文件提取出来
  • 网络相关(#NetWord#):默认情况:bind=127.0.0.1 # 只能接收本机的访问请求
    • 不写 ,将该语句注释,可以无限制的接收任何ip地址的访问
    • 生产环境肯定要写你应用服务器的地址:服务器是需要远程访问的,所以要将其注释掉
    • 注:如果开启了protected-mode,那么在没有设定bind ip 且没有设置密码的情况下,redis只允许接收本机的响应
    • protected-mode :将本机访问保护模式设置no
    • port :端口 默认 6379
    • tcp-backlog :设置tcp的backlog,backlog其实是一个连接队列,backlog队列总和=未完成三次握手队列+已经完成三次握手队列。在高并发的环境下你需要一个高backlog值来避免慢客户端连接问题
    • timeout :一个空闲的客户端维持多少秒会关闭,0表示关闭该功能,即永不关闭
    • 对方问客户端的一种心跳检测,每个n秒检测一次,单位为秒,如果设置为0,则不会进行keepalive检测,建议设置60
  • 通用(#General#) : 一些通用设置
    • daemonize : 手否为后台进程,设置为yes 守护进程,后台启动
    • pidfile :存放pid文件的位置,每个实例会产生一个不同的pid文件
    • loglevel : 指定日志记录几倍,redis共支持四个级别:debug | verbose | notice | warning 默认notice
    • logfile :日志文件名称
    • databases : 16 设置库的数量 默认16 ,默认数据库为0号数据库,可以使用select num 命令在连接上指定数据库id
  • 安全(#Security#) : 安全设置
    • 访问密码的查看、设置和取消,在命令中设置密码,只是临时的,容器redis服务器密码就还原了,永久设置需要在配置文件中进行设置
  • 限制(#Limits#) : 限制
    • maxclients : 设置redis同时可以与多个客户端进行连接
      • 默认情况下为10000个客户端
      • 如果达到了此限制,redis会拒绝新的连接请求,并且向这些连接请求发出"max number of clients reached" 作为回应
    • maxmemory : 建议必须设置,斗则内存占满,造成服务器宕机
      • 设置redis可以使用的内存量,一旦达到内存使用上限,redis将会视图移除内部数据,移除规则可以通过maxmemory-policy来指定
      • 如果redis无法根据移除规则来移除内存中的数据,或者设置了"不允许移除",那么redis则会针对那些需要申请内存的指定返回错误信息,如 SET | LPUSH 等
      • 但是对于无内存申请的指定,仍然会做出正常响应,比如GET等,如果你的redis是主redis(说明你的redis有从redis),那么再设置内存使用上限时,需要在系统中流出一些内存空间给同步队列缓存,只有在你设置的是"不移除"的情况下,才不用考虑这个因素
    • maxmemory-policy :
      • volatile-lru : 使用LRU算法移除key,只对设置了过期时间的键(最近最少使用)
      • allkeys-lru : 在所有集合key中,使用LRU算法移除key
      • volatile-random :在过期集合中移除随机的key,只对设置了过期时间的键
      • allkeys-random : 在所有集合key中,移除随机的key
      • volatile-ttl : 移除那些TTL值最小的key,即那些最近要过期的key
      • noeviction : 不进行移除,针对写操作,只是返回错误信息
    • maxmemory-samples :
      • 设置样本数量,LRU算法和最小TTL算法都并非是精确的算法,而是估算值,所以你那个可以设置样本的大小,redis默认会检查这么多个key并选择其中LRU的那个
      • 一般设置3到7的数字,数值越小样本越不准确,但性能消耗最小
2、redis的发布和订阅
  • 什么是发布和订阅?

    • redis发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息
    • redis客户端可以订阅任意数量的频道
  • 客户端可以订阅频道

    在这里插入图片描述

  • 当这个频道发布消息后,消息就会发送给订阅的客户端

    在这里插入图片描述

  • 命令行实现发布与订阅的功能
    -在这里插入图片描述

3、redis新数据类型
  • Bitmaps : redis提供了Bitmaps这个"数据类型"可以实现对位的操作

    • Bitmaps本身不是一种数据类型,实际上它就是字符串(key-value),但是它可以对字符串的位进行操作

    • Bitmaps单独提供了一套指令,所有在Redis中使用Bitmaps和使用字符串的方法不太相同。可以把Bitmaps想象成一个以位为单位的数组,数组的每个单元只能存储0和1,数组的下标在Bitmaps中叫做偏移量

      命令语法描述
      setbit key offset value设置Bitmaps中的某个偏移量的值(0,1)offset:偏移量从0开始
      getbit key offset获取Bitmaps中某个偏移量的值
      bitcount key [start end]统计字符串从start字节到end字节比特值为1的数量
      (start和end参数的设置,都可以使用负数值:比如-1表示最后一个位,-2表示倒数第二个位,start、end是指bit组的字节下标数,二者皆包含)
      bitop and(or/not/xor)bitop是一个符合操作,它可以做多个Bitmaps的and(交集)、or(并集)、not(非)、xor(亦或)操作并将结果保存在destkey中
  • HyperLoglog : 用来做统计工作,HyperLoglog只会根据输入元素来计算基数,而不会存储输入元素本身,所以HyperLoglog不能像集合那样,返回输入的各个元素

    • 基数 :比如数据集{1,3,5,7,5,7,8} ,那么这个数据集的基数集为{1,3,5,7,8}基数(不重复元素)为5。基数估计就是在误差可接受的范围内,快速计算基数

      命令语法描述
      pfadd key [element element]添加指定元素到HyperLoglog中
      pfcount key [key]计算HLL的近似技术,可以计算多个HLL,比如用HLL存储每天的UV,计算一周的UV可以使用7天的UV合并计算即可
      pfmerge destkey sourcekey [sourcekey]将一个或多个HLL合并后的结果存储在另一个HLL中
  • Geospatial : redis3.2时增加了对GEO类型的支持,地理信息的缩写。redis基于该类型同乐经纬度的设置

    命令语法描述
    geoadd key longitude latitude member […]添加地理位置(经度,纬度,名称,不能添加已有的)
    (当坐标位置超出指定范围,该命令将会返回一个错误)
    geopos key member [member]获得指定地区的坐标值
    geodist key member1 member2 [m|km|ft|mi]获取两个位置之间的直线距离
    georadius key longitude latitude radius m|km|ft|mi以给定的经纬度为中心,找出某一半径内的元素
这篇关于二、Redis配置的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!