zoukankan      html  css  js  c++  java
  • REDIS集群

     redis简介

    资源:

    • https://redis.io/
      https://redis.io/download/
      http://redisdoc.com/

    特点:

    • 速度快
    • 支持多种数据结构
    • 持久化
    • 主从复制
    • 支持过期时间
    • 支持事务
    • 消息订阅
    • 官方不支持windows,但是有第三方版本

    应用场景:

    • 数据缓存                         --提高访问性能,使用的方式与memcache相同
    • 会话缓存(Session Cache)  --保存web会话信息,与cookie,session相比,因为有slb的原因,用redis更适合
    • 排行榜/计数器                    --Nginx+lua+Redis计数器进行ip自动封禁
    • 消息队列                             --构建实时消息系统,聊天,群聊

     

    redis安装与多实例

    安装配置:

    yum安装,如果起不来,请参考日志信息

    [root@Poppy ~]# yum install redis
    [root@Poppy ~]# systemctl status redis.service
    [root@Poppy ~]# vi /etc/redis.conf
    [root@Poppy ~]# cat /var/log/redis/redis.log
    [root@Poppy ~]# chown -R redis.redis /var/log/redis/redis.log
    [root@Poppy ~]# systemctl start redis.service
    [root@Poppy ~]# systemctl status redis

    编译安装,可以设置多目录,改不同端口可实现多redis实例共存

    [root@Poppy ~]# wget http://download.redis.io/releases/redis-3.2.6.tar.gz
    [root@Poppy ~]# mv redis-3.2.6.tar.gz /data/
    [root@Poppy ~]# cd /data/
    [root@Poppy ~]# mkdir redis6380
    [root@Poppy ~]# tar -zxf redis-3.2.6.tar.gz -C redis6380/
    [root@Poppy ~]# cd redis6380/
    [root@Poppy ~]# cd redis-3.2.6/
    [root@Poppy ~]# make
    [root@Poppy ~]# cp redis.conf ../
    [root@Poppy ~]# cp src/redis-server ../

    配置文件redis.conf里面修改

    启动redis

    [root@Poppy redis6380]# ./redis-server ./redis.conf 
    [root@Poppy redis6380]# netstat -ntlp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    tcp        0      0 60.205.188.107:6666     0.0.0.0:*               LISTEN      14584/java          
    tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      18969/redis-server  
    tcp        0      0 127.0.0.1:6380          0.0.0.0:*               LISTEN      25154/./redis-serve 
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      2213/sshd 

    访问redis

    [root@Poppy ~]# redis-cli 6379
    [root@Poppy ~]# ./redis-cli -p 6380 编译目录下src下有这个命令
    [root@Poppy ~]# redis-cli -h 127.0.0.1 -p 6380 通过netstart -ntlp查看绑定在哪个ip上

    退出访问终端和在终端停止redis

    [root@Poppy redis6380]# redis-cli -p 6380           
    127.0.0.1:6380> exit
    [root@Poppy redis6380]# redis-cli -p 6380 
    127.0.0.1:6380> SHUTDOWN
    not connected> exit

    Bind 保护模式,认证机制

    • Redis 3.2新特性                     -解决访问安全
    • Bind                                     -指定ip进行监听bind 192.168.1.xxx
    • 启用保护模式protected-mode              -protected-mode yes/no
    • 增加requirepass {password}     -requirepass poppy
    • 在redis-cli中使用                   -auth {password}进行认证

    客户端登录

    [root@Poppy redis6380]# kill -9 25378
    [root@Poppy redis6380]# ./redis-server ./redis.conf 
    [root@Poppy redis6380]# redis-cli -p 6380           
    127.0.0.1:6380> get foo
    (error) NOAUTH Authentication required.
    127.0.0.1:6380> auth poppy
    OK

    运行配置

    • 获取当前配置  config get*
    • 变更运行配置  config set loglevel 'notice'

    客户端进入后,可输入上述命令查看,运行配置变更重启失效

    redis数据存储

    持久化

    持久化策略

    压缩

    同步

    常规操作与数据类型

    字符串操作

    哈希操作

    列表操作

    集合操作

    生产消费模型

    list数据类型生产包子,删除包子

    redis发布订阅

    订阅发布实例

    redis事务

    事务命令

    服务器命令

    慢日志查询

    数据备份

    主从复制

    在官方文档里面查找方法

    危险 Redis 命令

    Redis 稍微有点使用经验的人都知道线上是不能执行 keys * 相关命令的,虽然其模糊匹配功能使用非常方便也很强大,在小数据量情况下使用没什么问题,数据量大会导致 Redis 锁住及 CPU 飙升,在生产环境建议禁用或者重命名!

    还有哪些危险命令?

    Redis 的危险命令主要有以下几个:

    • keys

    客户端可查询出所有存在的键。

    • flushdb

    Delete all the keys of the currently selected DB. This command never fails.

    删除 Redis 中当前所在数据库中的所有记录,并且此命令从不会执行失败。

    • flushall

    Delete all the keys of all the existing databases, not just the currently selected one. This command never fails.

    删除 Redis 中所有数据库中的所有记录,不只是当前所在数据库,并且此命令从不会执行失败。

    • config

    客户端可修改 Redis 配置。

    怎么禁用或重命名危险命令?

    看下 redis.conf 默认配置文件,找到 SECURITY 区域,如以下所示。

    ################################## SECURITY ###################################
    
    # Require clients to issue AUTH <PASSWORD> before processing any other
    # commands.  This might be useful in environments in which you do not trust
    # others with access to the host running redis-server.
    #
    # This should stay commented out for backward compatibility and because most
    # people do not need auth (e.g. they run their own servers).
    #
    # Warning: since Redis is pretty fast an outside user can try up to
    # 150k passwords per second against a good box. This means that you should
    # use a very strong password otherwise it will be very easy to break.
    #
    # requirepass foobared
    
    # Command renaming.
    #
    # It is possible to change the name of dangerous commands in a shared
    # environment. For instance the CONFIG command may be renamed into something
    # hard to guess so that it will still be available for internal-use tools
    # but not available for general clients.
    #
    # Example:
    #
    # rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
    #
    # It is also possible to completely kill a command by renaming it into
    # an empty string:
    #
    # rename-command CONFIG ""
    #
    # Please note that changing the name of commands that are logged into the
    # AOF file or transmitted to slaves may cause problems.
    

    看说明,添加 rename-command 配置即可达到安全目的。

    1)禁用命令

    rename-command KEYS     ""
    rename-command FLUSHALL ""
    rename-command FLUSHDB  ""
    rename-command CONFIG   ""

    2)重命名命令

    rename-command KEYS     "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    rename-command FLUSHALL "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    rename-command FLUSHDB  "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    rename-command CONFIG   "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

    上面的 XX 可以定义新命令名称,或者用随机字符代替。

    经过以上的设置之后,危险命令就不会被客户端执行了。

      

  • 相关阅读:
    9.5 dubbo事件通知机制
    9.4 dubbo异步调用原理
    13.1 dubbo服务降级源码解析
    第十八章 dubbo-monitor计数监控
    12.4 客户端响应解码
    12.3 服务端响应编码
    12.2 服务端请求解码
    12.1 客户端请求编码
    git生成并添加SSH key
    Java并发之原子操作类汇总
  • 原文地址:https://www.cnblogs.com/jokerbj/p/10257383.html
Copyright © 2011-2022 走看看