1.Redis 是什么

  • Remote Dictionary Service 远程字典服务
  • 基于内存的key-value结构的数据库
  • 使用广泛的存储中间件

    1.1 特点

  • 基于内存存储,读写性能高

  • 适合存储热点数据(热点商品、资讯、新闻)
  • 企业应用广泛
  • 存储的value类型比较丰富,也被称为结构化的NoSql数据库

    • NoSql(Not Only SQL)泛指非关系型数据库

      1.2 可以做什么

  • 数据缓存 ★

  • 消息队列
  • 注册中心
  • 发布订阅
  • 分布式锁

    2. redis的下载安装

    2.1下载

  • Windows版下载地址:https://github.com/microsoftarchive/redis/releases

  • Linux版下载地址: https://download.redis.io/releases/

    2.2 安装

    2.2.1 window 安装

  • Redis的Windows版属于绿色软件,直接解压即可使用

image.png

2.2.2 linux 安装

步骤:

  • 上传linux ,解压到指定的目录
    • tar -zxvf redis.tar.gz -C /usr/local
  • 因为是源码发布, 需要安装依赖环境gcc
    • yum install gcc-c++
  • 切换到redis的目录下进行编译
    • 执行命令 make
  • 切换到redis目录下的src目录中进行安装
    • 执行命令 make install
  • 关键文件说明:

    • redis-server Redis服务启动脚本
    • redis-cli Redis客户端脚本
    • redis.conf Redis配置文件

      修改配置

  • 进入redis.conf修改配置文件 vim redis.conf

    • 设置Redis服务后台运行
      • 将配置文件中的==daemonize==配置项改为yes,默认值为no
    • 设置Redis服务密码(安全)
      • 将配置文件中的# requirepass foobared 配置项取消注释,默认为注释状态。foobared为密码,可以根据情况自己指定(我的:336699)
    • 设置允许客户端远程连接Redis服务

      • 将配置文件中的 #bind 127.0.0.1 修改为 bind 0.0.0.0 并去掉注释

        启动redis服务

    • 启动Redis服务,指定使用的配置文件 ./src/redis-server ./redis.conf

    • 客户端启动 ./src/redis-cli ```shell

      客户端连接通过后认证

      [root@192 redis]# src/redis-cli 127.0.0.1:6379> KEYS *

      当前用户没有被合法认证

      (error) NOAUTH Authentication required.

      通过auth命令认证

      127.0.0.1:6379> AUTH laofang OK 127.0.0.1:6379> KEYS * (empty list or set) 127.0.0.1:6379>

第二种登陆方式

连接时参数中携带认证信息

[root@192 redis] #./src/redis-cli -h 192.168.200.128 -p 6379 -a 密码

  1. ```shell
  2. [root@192 redis] #./src/redis-cli -h 192.168.200.128 -p 6379 -a 密码
  3. -h 指定连接的Redis服务的ip地址
  4. -p 指定连接的Redis服务的端口号
  5. -a 指定连接的Redis服务的密码

停止

Ctrl + C 停止Redis服务
退出客户端可以输入 exit 或者 quit 命令。

3. Redis数据类型

Redis存储的是key-value结构的数据,其中key是字符串类型,value有5种常用的数据类型:

字符串 string

  • 常用指令
    • SET key value 设定指定key值
      • SET name zhangsan 设置name为zhangsan
    • GET key 获取指定key值
      • GET name 获取name的值
    • SETEX key second value 设置key的存活时间
      • SETEX name 10 zhangsan 10秒之后key过期
    • SETNX key value key不存在时赋值成功,存在赋值失败
    • del key 删除指定的key
      • del name 删除name
    • KEYS * 查看所有的key
  • 使用场景
    • 用户手机号验证码登录功能中,验证码后台保存在redis下
    • 模拟session功能,利用设置获取时间模拟sesison失效等

哈希 hash—->类型java中的HashMap

Redis hash 是一个string类型的 field 和 value 的映射表,hash特别适合用于存储对象

  • 常用指令
    • HSET key field value 将field的值设为value
      • HSET myset name zhangsan 将name设为zhangsan
    • HGET key field 获取指定字段field 的值
      • HGET myset name 获取name的值为zhsangsan
    • HDEL key field 删除指定字段的值
      • HDEL myset name 删除name的值
    • HKEYS key 获取所有的字段
    • HVALS key 获取所有的值
    • HGETALL key 获取指定 key 的所有字段和值
  • 使用场景:
    • 一般用户保存对象:比如用户信息
    • 热点商品信息等

列表 list—->类似java的ArrayList

  • 特点:有序可重复
  • 常用指令:
    • LPUSH key value [value] 将一个或多个值插入到列表头部(列表左侧)
      • LPUSH mylist 1 4 2 3 2 4 2 5
    • LRANGE key start stop 获取列表指定范围内的元素
      • LRANGE myset 0 -1 获取所有元素
    • RPOP key 移除并获取列表最后一个元素
      • RPOP mylist 删除列表末尾(右侧)并获取并删除元素
    • LLEN key 获取列表长度
      • LLEN mylist
    • BRPOP key [key] timeout 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止,超时时间单位默认是秒
    • LREM key count value 删除指定数量的元素

  • 使用场景:
    • 电商项目中大广告位:有序 集合 热点数据等;
    • 只要是热点数据,且以集合形式存储都可使用list

集合 set——>类型java中HashSet

  • 无序 元素唯一
  • 常用指令:
    • SADD key member1 [member2] 向集合添加一个或多个成员
    • SMEMBERS key 返回集合中的所有成员
    • SCARD key 获取集合的成员数
    • SINTER key1 [key2] 返回给定所有集合的交集(集合中都共有的部分)
    • SUNION key1 [key2] 返回所有给定集合的并集
    • SDIFF key1 [key2] 返回给定所有集合的差集
    • SREM key members [members] 移除集合中一个或多个成员
  • 使用场景:
    - 朋友圈模型中获取共同好友、推荐可能认识的人使用集合的交集、差集功能等
    - 需要去重的少量信息,比如:身份证信息、手机号码等作为黑名单|白名单;
    

    有序集合 sorted set / zset

  • 只能保证有序,不能保证不重复,集合了列表和集合的优势
  • 常用指令:
    • ZADD key score1 member1 [score2 member2] 向有序集合添加一个或多个成员,或者更新已存在成员的 分数
    • ARANGE key start stop [WITHSCORES] 通过索引区间返回有序集合中指定区间内的成员
    • ZINCRBY key increment member 对指定成员的分数加上增量 incremen
    • ZREM key member1 [member..] 移除有序集合中的一个或多个成员
  • 使用场景:
    • 1.微博热搜文章根据点击数量排行
    • 2.涉及到热点数据,且需要按照某种规则排序的场景