Linux安装redis

  1. 作者QQ:67065435 QQ群:669756510

  2. 本站内容全部为作者原创,转载请注明出处!

redis环境搭建(每台redis都执行)

  1. 升级gcc

  2. 创建配置中要求的数据文件存储位置

    mkdir /data
    mkdir /data/redis
    mkdir /usr/local/redis
    
  3. 下载解压并安装

    cd /root
    wget --no-check-certificate -c https://download.redis.io/releases/redis-7.0.5.tar.gz
    tar -xf redis-7.0.5.tar.gz
    cd redis-7.0.5
    make PREFIX=/usr/local/redis/ install
    
  4. 添加修改配置文件

    cp ./redis.conf /usr/local/redis
    chmod -R 600 /usr/local/redis/redis.conf
    
    vim /usr/local/redis/redis.conf
    
    # 【LAN_IP】为主redis局域网IP
    bind 127.0.0.1 ::1 【LAN_IP】
    port 6379
    timeout 0
    daemonize yes
    pidfile /data/redis/redis.pid
    logfile /data/redis/redis.log
    dir /data/redis
    requirepass **************
    notify-keyspace-events Ex
    
    # 以下选项只配置在从服务器!!!
    replicaof 【LAN_IP】 6379
    masterauth **************
    
    ESC
    :wq
    
  5. 性能优化 ``` vim /etc/sysctl.conf

    vm.overcommit_memory=1 net.core.somaxconn=8192

    ESC :wq

vim /etc/rc.local

echo never > /sys/kernel/mm/transparent_hugepage/enabled

ESC :wq

echo never > /sys/kernel/mm/transparent_hugepage/enabled echo 8192 > /proc/sys/net/core/somaxconn

sysctl vm.overcommit_memory=1 sysctl net.core.somaxconn=8192

chmod +x /etc/rc.d/rc.local sysctl -p


1. 修改目录归属

useradd -s /sbin/nologin -M redis chown -R redis:redis /data/redis chown -R redis:redis /usr/local/redis


1. 启动redis并设置开机启动

进入单元文件目录

vim /etc/systemd/system/redis.service

[Unit] Description=Redis After=default.target network.target

[Service] User=redis Group=redis Type=forking ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf StartLimitInterval=0 PrivateTmp=true Restart=always RestartSec=5

[Install] WantedBy=multi-user.target

ESC :wq

systemctl daemon-reload systemctl enable redis systemctl start redis


1. 配置防火墙

systemctl unmask firewalld systemctl enable firewalld systemctl start firewalld firewall-cmd --permanent --zone=public --add-port=6379/tcp firewall-cmd --reload


1. 环境变量

vim /etc/profile

export PATH=$PATH:/usr/local/redis/bin

ESC :wq

source /etc/profile


1. 存入数据

redis-cli -h 127.0.0.1

set num 123 save get num quit


1. 批量删除匹配规则数据

redis-cli keys [匹配规则]|xargs redis-cli del


## redis高可用(每台redis都执行)

1. 添加修改配置文件

vim /usr/local/redis/sentinel.conf

protected-mode no port 26379 daemonize yes pidfile "/usr/local/redis/sentinel.pid" logfile "/usr/local/redis/sentinel.log" dir "/tmp" sentinel monitor master 【LAN_IP】 6379 2 sentinel auth-pass master ** sentinel failover-timeout master 2000 sentinel deny-scripts-reconfig yes

ESC :wq


1. 修改目录归属

useradd -s /sbin/nologin -M redis chown -R redis:redis /data/redis chown -R redis:redis /usr/local/redis


1. 启动sentinel并设置开机启动

进入单元文件目录

vim /etc/systemd/system/sentinel.service

[Unit] Description=Sentinel After=default.target network.target

[Service] User=redis Group=redis Type=forking ExecStart=/usr/local/redis/bin/redis-sentinel /usr/local/redis/sentinel.conf StartLimitInterval=0 PrivateTmp=true Restart=always RestartSec=5

[Install] WantedBy=multi-user.target

ESC :wq

systemctl daemon-reload systemctl enable sentinel systemctl start sentinel


1. 配置防火墙

systemctl unmask firewalld systemctl enable firewalld systemctl start firewalld firewall-cmd --permanent --zone=public --add-port=26379/tcp firewall-cmd --reload


1. SncRedis兼容
   ```yaml
   snc_redis:
       clients:
           default:
               type: predis
               alias: default
               dsn:
                   - "redis://%redis_pswd1%@%redis_host_master1%:%redis_port1%/%redis_dtbs1%"
                   - "redis://%redis_pswd1%@%redis_host_slave1_1%:%redis_port1%/%redis_dtbs1%"
                   - "redis://%redis_pswd1%@%redis_host_slave1_2%:%redis_port1%/%redis_dtbs1%"
                   - "redis://%redis_pswd1%@%redis_host_slave1_3%:%redis_port1%/%redis_dtbs1%"
               options:
                   replication: sentinel
                   prefix: "%redis_prefix1%:"
                   service: "%redis_service1%"

redis数据类型

redis数据类型

  1. redis字符串(string)

    # 设置指定key的值
    set <key> <value>
    
    # 获取指定key的值
    get <key>
    
    # 批量设置指定key的值
    mset <key0> <value0> <key1> <value1> <key2> <value2>
    
    # 批量获取指定key的值
    mget <key0> <key1> <key2>
    
    # 将指定key的值加1
    incr <key>
    
    # 将指定key的值减1
    decr <key>
    
    # 将指定key的值加step
    incrby <key> <step>
    
    # 将指定key的值减step
    decrby <key> <step>
    
    # 获取指定字符串的长度
    strlen  <key>
    
    # 将指定key删除
    del <key>
    
    # 适用场景(点赞数、收藏数)
    常规【键→值】缓存,用来缓存频繁操作的计数。
    
  2. redis哈希(hash)

    # 设置指定key的hkey的值
    hset <key> <hkey0> <value0>
    hset <key> <hkey0> <value0> <hkey1> <value1> <hkey2> <value2>
    
    # 获取指定key的hkey的值
    hget <key> <hkey0>
    
    # 获取指定key的所有hkey的值
    hgetall <key>
    
    # 获取指定哈希表的长度
    hlen  <key>
    
    # 将指定key删除
    del <key>
    
    # 适用场景(用户信息、书籍信息)
    常规【键→值对】缓存,用来缓存频繁操作的对象。
    
  3. redis队列(list)

    # 指定key左入队多个值
    lpush <key> <value0> <value1> <value2>
    
    # 指定key右入队多个值
    rpush <key> <value3> <value4> <value5>
    
    # 指定key左出队step个值
    lpop <key> <step>
    
    # 指定key右出队step个值
    rpop <key> <step>
    
    # 获取指定key队列左起第step1个到step2个值
    lrange <key> <step1> <step2>
    
    # 获取指定key队列右起第step1个到step2个值
    rrange <key> <step1> <step2>
    
    # 获取指定队列的长度
    llen  <key>
    
    # 将指定key删除
    del <key>
    
    # 适用场景(排队叫号、饭店点餐)
    【队列】缓存,用来缓存需要频繁操作排序的队列。
    
  4. redis集合(set)

    # 指定key添加多个元素到集合
    sadd <key> <value0> <value1> <value2>
    
    # 指定key从集合删除多个元素
    srem <key> <value0> <value1> <value2>
    
    # 指定key获取集合交集
    sinter <key0> <key1> <key2>
    
    # 指定key获取集合并集
    sunion <key0> <key1> <key2>
    
    # 指定key获取集合差集
    sdiff <key0> <key1> <key2>
    
    # 指定key获取集合交集元素数量
    sinterstore <key0> <key1> <key2>
    
    # 指定key获取集合并集元素数量
    sunionstore <key0> <key1> <key2>
    
    # 指定key获取集合差集元素数量
    sdiffstore <key0> <key1> <key2>
    
    # 指定key打印集合中所有元素
    smembers <key>
    
    # 指定key打印集合中元素数量
    scard <key>
    
    # 指定key判断元素是否为集合成员
    sismember <key> <value0>
    
    # 指定key从集合中随机移除count个元素并返回
    spop <key> <count>
    
    # 指定key从集合中随机获取count个元素并返回
    srandmember <key> <count>
    
    # 指定key0中的元素移动到key1
    smove <key0> <key1> <value0>
    
    # 将指定key删除
    del <key>
    
    # 适用场景(共同关注、共同好友、兴趣圈、抖音'可能认识的人')
    【集合】缓存,用来缓存需要频繁操作特定属性成员的集合。
    
  5. redis有序集合(zset)

    # 指定key添加多个计分元素到有序集合
    zadd <key> <score0> <value0> <score1> <value1> <score2> <value2>
    
    # 指定key从有序集合删除多个计分元素
    zadd <key> <value0> <value1> <value2>
    
    # 指定key获取有序集合中第step0到step1个元素及对应的score
    zrevrange <key> <step0> <step1> withscores
    
    # 将指定key删除
    del <key>
    
    # 适用场景(成绩榜单、购买榜、订阅榜)
    【有序集合】缓存,用来缓存需要频繁操作特定属性计分成员的有序集合。
    
Copyright © 鲸小鱼 2012-∞ all right reserved,powered by Gitbook修订: 2000-10-10 00:00

results matching ""

    No results matching ""