1.Redis 是什么
- Remote Dictionary Service 远程字典服务
- 基于内存的key-value结构的数据库
-
1.1 特点
基于内存存储,读写性能高
- 适合存储热点数据(热点商品、资讯、新闻)
- 企业应用广泛
存储的value类型比较丰富,也被称为结构化的NoSql数据库
数据缓存 ★
- 消息队列
- 注册中心
- 发布订阅
-
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版属于绿色软件,直接解压即可使用
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.conf修改配置文件 vim redis.conf
- 设置Redis服务后台运行
- 将配置文件中的==daemonize==配置项改为yes,默认值为no
- 设置Redis服务密码(安全)
- 将配置文件中的# requirepass foobared 配置项取消注释,默认为注释状态。foobared为密码,可以根据情况自己指定(我的:336699)
设置允许客户端远程连接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>
- 设置Redis服务后台运行
第二种登陆方式
连接时参数中携带认证信息
[root@192 redis] #./src/redis-cli -h 192.168.200.128 -p 6379 -a 密码
```shell
[root@192 redis] #./src/redis-cli -h 192.168.200.128 -p 6379 -a 密码
-h 指定连接的Redis服务的ip地址
-p 指定连接的Redis服务的端口号
-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
- SET key value 设定指定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 的所有字段和值
- HSET key field value 将field的值设为value
- 使用场景:
- 一般用户保存对象:比如用户信息
- 热点商品信息等
列表 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 删除指定数量的元素
- LPUSH key value [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.涉及到热点数据,且需要按照某种规则排序的场景