Redis学习总结

Redis学习总结

一、redis介绍

1.什么是redis

redis是key-value形式的非关系型的、分布式的、开源的、水平扩展的数据库服务器,数据都缓存在内存中,效率高。

优点:对数据高并发读写,对海量数据的高效率存储和访问,对数据的可扩展性和高可用性

缺点:无法做到太复杂的关系数据模型

2.redis的数据类型

字符串(String)、字典(hash)、列表(list)、集合(set)、有序集合(zset)

1)字符串(String)

  • 设置值set:set key value

  • 取值get:get key

  • 替换字符串setrange:set key value

    ​ setrange key 下标 新value

  • 设置多个值mset:mset key1 value1 key2 value2

  • 取多个值mget:mget key1 key2

  • 递增incr:incr key

  • 递减decr:decr key

  • 指定长度递增incrby:incrby key 长度

  • 指定长度递减decrby:decrby key 长度

  • 追加append:append 原key 新value

  • 获取字符串长度strlen:strlen key

2)字典(hash常用)

  • 设置值hset:hset name key value
  • 取值hget:hget name key
  • 设置多个值hmset:hmset name key1 value1 key2 value2
  • 取多个值hmget:hmget name key1 key2
  • 集合递增hincrby、递减hdecrby
  • 判断是否存在hexists:hexists name key
  • 返回所有的键值对的长度hlen:hlen name key
  • 删除集合指定字段hdel:hdel name key
  • 返回所有字段hkeys:hkeys name
  • 返回所有值hvals:hvals name
  • 返回所有字段和值hgetall:hgetall name

3)列表(list)

  • 从头加入元素(栈)先进后出lpush:lpush 同key value1 lpush 同key value2

    ​ 查看:lrange 同key 0 -1

  • 从尾加入元素(队列)先进先出rpush:rpush 同key value1 lpush 同key value2

    ​ 查看:lrange 同key 0 -1

  • 插入元素linsert:linsert key before 原value 新value

  • 将指定下标的元素替换掉lset:lset key 下标 新value

  • 删除元素返回删除个数lrem:lrem key 个数 value

  • 保存指定key的值范围内的数据ltrim:ltirm key 范围开始下标 范围接数下标

  • 从key的头部删除元素并返回删除元素lpop:lpop key

  • 从key的尾部删除元素并返回删除元素rpop:rpop key

  • 从尾部删除加在头部rpoplpop:rpoplpop 同key 同key

  • 返回指定下标的元素lindex:lindex key 下标

  • 返回元素的个数lien:lien key

4)集合(set)

  • 添加元素sadd:sadd 同key value1 sadd 同key value2

    ​ 查看:smembers key

  • 删除元素srem:srem key

  • 随机返回删除的值spop:spop key

  • 返回两个集合中的不同元素(以前一个集合为准)sdiff:sdiff key1 key2

  • 返回两个集合中的不同元素(以前一个集合为准)存储到另外一个集合中sdiffstore:sdiffsore key1 key2 key3

  • 返回集合的交集sinter:sinter key1 key2

  • 返回集合的交集存储到另外一个集合中sinterstore:sinterstore key1 key2 key3

  • 返回集合的并集sunion:sunion key1 key2

  • 返回集合的并集存储到另外一个集合中sunionstore:sunionstore key1 key2 key3

  • 从前一个集合移动到后一个集合smove:smove key1 key2 value1

  • 集合的元素个数scard:scard key

  • 判断元素是否存在集合sismember:sismember key value

  • 随机返回一个元素srandmember:srandmember key

5)有序集合(zset) 排行版

  • 添加元素zadd:zadd key 序号 value(根据序号自动排序)

    ​ 查看:zrange key 0 -1 withscore(出现序号)

  • 删除元素zrem:zrem key value

  • 递增zincrby:zincrby key

  • 找到指定区间范围的数据进行返回zrangebyscore:zrangebyscore key 范围开始下标 范围结束下标

  • 删除指定序号zremrangebyscore:zremrangebyscore key 序号

3.redis高级命令
  • 判断是否存在exists:exists key
  • 设置过期时间expire:expire key time
  • 查看剩余时间ttl:ttl key
  • 取消过期时间persist:persist key
  • 选择数据库(16个数据库0-15)select:select 数据库下标
  • 将当前数据库中的key移动到其他数据库move:move key 数据库下标
  • 随机返回数据库力的一个key randomkey:randomkey key
  • 重命名rename:rename key

二、liunx环境下的redis

1.linux虚拟机上下载和安装redis

1)首先需要安装 gcc
yum install gcc-c++
yum install -y tcl
yum install wget
2)获取安装文件(下载版本参考https://redis.io/download
wget http://download.redis.io/releases/redis-5.0.8.tar.gz
3)将下载好的 redis-5.0.8.tar.gz 移到 /usr/local 文件夹下
mv redis-5.0.8.tar.gz /usr/local
4)进入 /usr/local 目录下进行解压 redis-5.0.8.tar.gz
cd /usr/local
tar -zxvf redis-5.0.8.tar.gz
5)进入解压好的 redis-5.0.8 目录下进行编译 make
cd /usr/local/redis-5.0.8
make
6)进入到 src 目录下进行安装 make install(验证安装:ll 查看 src 目录下有 redis-server、redis-cli即可)
cd /usr/local/redis-5.0.8/src
make install
7)创建两个文件夹放到 redis (命令和配置文件)
mkdir -p /usr/local/redis/etc
mkdir -p /usr/local/redis/bin
8)进入到 redis-5.0.8 下,把 redis.conf 移动到 /usr/local/redis/etc 下
cd /usr/local/redis-5.0.8
cp redis.conf /usr/local/redis/etc/
9)进入到 redis-5.0.8/src 下,把其中的几个命令移动到 /usr/local/redis/bin 下
cd /usr/local/redis-5.0.8/src
mv mkrekeasehdr.sh redis-benchmark redis-check-aof redis-check- dump redis-cli redis-server /usr/local/redis/bin
10)后台启动修改配置文件 redis.conf 中的找到 daemonize 修改为 yes
vi/vim /usr/local/redis/etc/redis.conf
11)启动时并指定配置文件
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
12)查看是否启动(默认端口 6379)
ps -ef | grep 6379
13)进入 redis 客户端
/usr/local/redis/bin/redis-cli
14)退出 redis 客户端
quit
15)退出 redis 服务

  • pkill redis-server
  • kill 进程号
  • /usr/local/redis/bin/redis-cli shutdown
2.redis主从复制

1)主从复制

特点:1、master/slave角色 (master可以拥有多个slave)2、master/slave数据相同 3、降低master读的压力转交从库 (master可写可读,slave只可读)

缺点:1、无法保证高可用 2、没有解决master写的压力

2)主从复制的过程

  • master与slave建立连接,发送同步(synchronized)命令
  • master会开启一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存
  • 后台完成保存后,就将文件发送给slave
  • slave将此文件保存到内存中

3)主从复制的配置

  • 首先要clone服务器,并修改slave的IP地址,切换MAC地址

    • 克隆:Linux->右击主服务器->选择管理->选择克隆->选择创建完整克隆->修改名称、位置
    • 切换MAC:选择克隆服务器->选择网络适配器->选择高级->点击生成MAC地址(多点几次)
    • 修改IP:登录克隆服务器->执行 vi /etc/sysconfig/network-scripts/ifcfg-ens33->修改IP->重启
  • 修改配置文件 redis.conf

    • 执行 vi /usr/local/redis/etc/redis.conf

      • slaveof

        slaveof 192.168.xxx.xxx 6379

      • masterauth

        masterauth xxxx

  • 最后执行 info 查看主从服务器

3.redis哨兵

1)首先要clone服务器,并修改slave的IP地址,切换MAC地址

  • 克隆:Linux->右击主服务器->选择管理->选择克隆->选择创建完整克隆->修改名称、位置
  • 切换MAC:选择克隆服务器->选择网络适配器->选择高级->点击生成MAC地址(多点几次)
  • 修改IP:登录克隆服务器->执行 vi /etc/sysconfig/network-scripts/ifcfg-ens33->修改IP->重启

2)到 redis-5.0.8 目录下将 sentinel.conf 移动到 /usr/local/redis/etc/

  • cd /usr/local/redis-5.0.8
  • cp sentinel.conf /usr/local/redis/etc/

3)在redis下创建两个文件夹,将redis.conf移动到文件夹下,修改配置(参照以上主从配置)

  • mkdir /usr/local/redis/6380
  • mkdir /usr/local/redis/6381
  • cp redis.conf /usr/local/redis/638*
  • vi /usr/local/redis/638* /redis.conf

4)修改配置文件 sentinel.conf

  • vi /usr/local/redis/etc/sentinel.conf
  • prot 26379
  • dir /usr/local/redis/etc/sentinel
  • daemonize yse
  • protected-mode no
  • logfile /usr/local/redis/etc/sentinel.log
  • sentinel deny-scripts-reconfig yes
  • sentinel monitor mumaster 192.168.xxx.xxx 2
  • sentinel auth-pass mymaster 123456
  • sentinel config-epoch mymaster 0
  • sentinel leader-epoch mymaster 0
    sentinel known-replica mymaster 127.0.0.1 6381
  • sentinel known-replica mymaster 127.0.0.1 6380
  • sentinel current-epoch 0

5)启动

  • 启动主库:/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
  • 启动从库1:/usr/local/redis/bin/redis-serverr /usr/local/redis/6380/redis.conf
  • 启动从库2:/usr/local/redis/bin/redis-server /usr/local/redis/6381/redis.conf
  • 启动哨兵:/usr/local/redis/bin/redis-server /usr/local/redis/etc/sentinel.conf
4.redis集群

1)创建一个redis-cluster文件夹,然后再里面创建六个文件夹

  • mkdir -p /usr/local/redis-cluster
  • cd redis-cluster
  • mkdir 7001(7001~7006)

2)将redis-5.0.8下的redis.conf分别复制到700* 文件下,修改700* 下的配置文件

  • cd /usr/local/redis-5.0.8
  • cp redis.conf /usr/local/redis-cluster/700*
  • vi redis.conf
    • daemonise yes
    • port 700*(修改为当前文件夹名)重点
    • bind 192.168.xxx.xxx(修改为当前IP)重点
    • dir /usr/local/redis-cluster(指定数据文件存放位置)
    • cluster-enabled yes(开启集群模式)
    • cluster-config-file nodes700* .conf(标识再该集群中——注册)重点
    • cluster-node-timeout 5000
    • appendonly yes(开启aof模式)

3)由于redis需要ruby,安装ruby

  • yunm install ruby
  • yunm install rubygems
  • gem install redis(安装ruby和redis的接口)

4)分别启动六个redis实例,然后检查是否成功

  • /usr/local/redis/bin/redis-server /usr/local/redis-cluster/700* /redis.conf
  • netstat tunp1 | grep redis

5)到redis-5.0.8的安装目录下,执行redis-trib.rb

  • cd /usr/local/redis-5.0.8/src
  • ./redis-trib.rb create -replicas 1 192.168.xxx.xxx:7001 192.168.xxx.xxx:7002 192.168.xxx.xxx:7003 192.168.xxx.xxx:7004 192.168.xxx.xxx:7005 192.168.xxx.xxx:7006

6)启动任意一个客户端(./redis-cli -c -h -p,-c表示集群模式,-h表示指定IP,-p表示端口号)

  • /usr/local/redis/bin/redis-cli -c -h 192.168.xxx.xxx -p 700*

7)进行验证

  • cluster info(查看集群信息)
  • cluster nodes (查看节点列表)

8)操作读写,验证数据

9)关闭集群需要逐个关闭

  • /usr/local/redis/bin/redis-cli -c -h 192.168.xxx.xxx -p 700* shutdown
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值