Redis简介,安装及常用命令
中国加油!武汉加油!
篇幅较长,配合右边目录观看
案例准备
- 准备redis-5.0.7.tar.gz
- Centos7 阿里云服务器 或 Centos7 虚拟机
- 如果是虚拟机可以参考
1. Redis是什么
- no sql 的数据库
- 基于键值对的存储系统
- 非关系型数据库
2. Redis能做什么
- 做数据缓存
- 购物车数据
- 评论的存储
- 抽奖
- 商场中的评分
- 最热的商品
- 秒杀
- 好友关注
- 实现session共享
- 分布式锁
3. Redis特点
- 是基于内存的
- 速度快
- 断电后,内存数据会丢失
- 应用场景:对数据要求不严格
- 存储结构中以key–value的形式进行存储
- 提供五种数据类型来满足不同的开发场景
- 提供三种持久化模式来保证数据的持久化
- 提供多种淘汰策略来满足缓存的数据一定是最新的
- 提供了大量的数据集,来完成我们开发中的操作
- 提供了三种架构(主从,哨兵,集群)
4. Redis五种数据类型
数据类型 | 描述 |
---|
String | 键值对,键是String,值可以是Object类型 |
Hash | 键对应的值是键值对 |
List | 相当于 一个键对应多个值,类似java中list集合 |
Set | 相当于java中的Set集合,一个key对应多个值,且多值没有顺序 |
Sorted Set | 一个key对应多个值,但是每个值都有一个得分(默认按分值排序) |
5. Redis安装
5.1 准备redis-5.0.7.tar.gz放入usr/local中
5.2 下载Redis运行的时候所需要的运行环境(c语言)
yum install gcc
5.3 解压redis-5.0.7.tar.gz
tar -zxvf redis-5.0.7.tar.gz
5.4 进入Redis的根目录进行编译
cd /usr/local/redis-5.0.7
make
5.5 进入到src目录下进行安装
cd /usr/local/redis-5.0.7/src
make install
5.6 创建运行的命令的目录和配置文件的目录
mkdir -p /usr/local/redis/bin
mkdir -p /usr/local/redis/etc
5.7 移动配置文件到 /usr/local/redis/etc目录下
cd /usr/local/redis-5.0.7
cp redis.conf /usr/local/redis/etc/
5.8 将运行命令放到 /usr/local/redis/bin目录下去
cd /usr/local/redis-5.0.7/src
cp redis-server /usr/local/redis/bin/
cp redis-cli /usr/local/redis/bin/
redis-server : redis服务端的启动程序
redis-cli : redis客户端的启动程序
客户端启动后,就可以对数据库的数据进行操作
5.9 前台启动Redis
cd /usr/local/redis/bin
./redis-server ../etc/redis.conf
在开一个视图
cd /usr/local/redis/bin
./redis-cli
5.10 后台启动Redis,修改redis.conf
cd /usr/local/redis/etc
vim redis.conf
进入直接 /daem 回车
修改daemonize为yes
6. redis常用命令
6.1 key
命令 | 描述 | 备注 |
---|
key * | 查看当前数据库中存在的键 | 一般不用,效率低 |
select 数据库下标 | 选择某个数据库 | redis默认16个数据库 (0~15) |
del key | 删除某一条数据 | 返回0表示删除失败 |
exists key | 判定某一个key是否存在 | token需要使用,所有缓存的地方都需要使用这个命令 |
expire key 过期时间 | 设置超时时间 /s | 可以用在前后分离项目 token设置过期时间 |
ttl key | 查看过期时间,过期后自动删除 | 死亡倒计时 使用场景:键如果需要续期 ,-1 表示没有过期时间,-2 表示key不存在 |
move key 数据库索引 | 将一个key-value移动到另外一个数据库中 | 应用与数据迁移,不常用 |
randomkey | 随便获取一个key | 不常用 |
6.2 String
命令 | 描述 | 备注 |
---|
set key value | 在数据库中设置一个键值对的数据 | 场景:存储对象的数据 set user:1:name wpj |
mset k1 v1 k2 v2 k3 v3 | 同时设置多个键多个值 | mset user:1:name wpj user:1:pwd 123 user:1:token 123 |
get key | 根据key在数据库中取出值 | get user:name 只取用户名 |
mget k1 v1 k2 v2 k3 v3 | 同时根据多个key在数据库中取出多个值 | metget user:1:name user:1:pwd user:1:token |
incr key | 自增 | 可以应用于点赞评论转发阅读再看人数; set kongjian:readcount:{日志id} 0; incr kongjian:readcount:日志id |
incrby key 值 | 自增值 | |
decr key | 自减 | |
decrby key 值 | 自减值 | |
setnx key value | 如果key不存在就设置键值对 | 用于分布式的锁上面 |
6.3 Hash
命令 | 描述 | 备注 |
---|
hset 集合名 key value | 设置集合的键值 | 设置失败还是会把值给覆盖了。应用场景:购物车 (hset cart:用户id 商品id 购买数量) |
hget 集合名 key | 根据键获取集合的键值 | hget cart:用户id 商品id |
hlen 集合名 key | 获取当前集合中值的数量 | 应用场景:购物车已选中几件商品 (hlen cart:用户id) |
hdel 集合名 key | 删除集合中某一个键 | 应用场景:购物车删除商品 (hdel cart:用户id 商品id) |
hincrby 集合名 key 增加的数量 | 给集合中的某个键添加数量 | 应用场景:购物车添加商品数量(hincrby cart:用户id 商品id 添加数量) |
hgetall 集合名 | 直接实现全选的功能 | 应用场景:购物车全选 (hgetall cart:用户id) |
hexists 集合名 key | 判断是否有集合 | hexists cart:用户id 商品id |
hkeys 集合名 | 获取集合中所有的键 | hkeys cart:用户id |
hvals 集合名 | 取出当前集合中所有的值 | hvals cart:用户id |
hmset 集合名 k1 v1 k2 v2 | 一次性设置集合中的多个键值 | (hmset cart k1 v1 k2 v2)(hmset user 1:name wpj 1:pwd 123) |
hmget 集合名 k1 k2 | 一次性根据key取出值 | (hmget cart k1 k2)(hmget user 2:name 2:pwd) |
6.4 List
命令 | 描述 | 备注 |
---|
lpush key value | 将一个或者多个值 插入到列表的表头 | 弹夹存储方式(lpush mobtech:msg:用户id 消息id) |
lpop key | 移除并返回这个列表的表头 | 同上 |
rpush key value | 在列表的表尾添加元素 | 反着来 |
rpop key | 从列表的右侧弹出元素 | 同上 |
lrange key start stop | 获取List中从start索引到stop索引里的值 | |
blpop key | 从列表的表头弹出一个元素 如果列表的表头没有元素 那么就阻塞等待 | blpop key time |
brpop key | 从列表的右侧弹出一个元素 如果没有元素 那么就阻塞等待 | |
6.5 Set
命令 | 描述 | 备注 |
---|
sadd key value | 向Set集合中添加一个值 | 应用场景:点赞(防止多次点赞)sadd weixin:like:消息id 用户id;sadd 集合的名字 集合的值 |
srem key value | 向Set集合中删除某一个值 | 应用场景:取消点赞 srem weixin:like:信息id 用户id |
sismember 键 值 | 检查某一个值是否在这个集合中存在 | 应用场景:检查用户是否点过赞 sismember weixin:like:消息id 用户id |
smembers key | 表示获取这个集合中的所有数据 | 应用场景:获取点赞列表 smembers weixin:like:信息id |
scard key | 获取集合中的数 | 获取点赞的人 scard weixin:like:信息id |
srandmember key count | 从集合中选出count个元素,元素不从key中删除(值是随机的) | |
spop key count | 从集合中选中count个元素,元素从集合中删除 | |
sinter key | 做交集运算 | |
sinterstore desternation key | 将交集的结果存入新的集合中 | |
sunion key | 并集运算 | |
sunionstore desternation key | 将并集的结果存入新的集合中 | |
sdiff key | 差集运算 | |
adiffstore desternation key | 将差集的结果存入新的集合中 | |
6.6 Sorted Set
命令 | 描述 | 备注 |
---|
zadd 集合名 打分 key名 | 向Sorted Set中添加一个数字 | 应用场景:做最热商品或人气商品 |
zrange 集合名 开始区间 结束区间 | 获取集合某一个区间的值 | 根据打分从小到大进行排序 |
zincrby 集合名 加分 key名 | 加分 | zrange good:hot 1000 goodId1 |
zrevrank 集合名 key | 查看排名 | zrevrank good:host goodId1 |
zrem 集合名 key | 删除某一条数据 | zrem good:host goodId1 |
zscore 集合名 key | 获取热度 | zscore good:host goodId1 |
zcount 集合名 start end | 获取得分在某一个区间的个数 | zcount good:host 200 1000 |