- redis 下载(docker 安装) 和命令
拉取 redis 镜像(alpine 是经典版)
docker pull redis:4-alpine
把本机的6379映射到虚拟的6379
docker run -it -p 6379:6379 --name redis(名字) redis:4-alpine(下载的镜像名)
进入redis
docker exec -it redis /bin/sh
与redis进行交互
redis-cli
一. Redis特性
速度快
基于内存, C语言实现, 单线程架构, 集性能和优雅于一身的代码
- 基于键值对的数据结构服务器
REmote DIctionary Server. 值可以是字符串/哈希/列表/集合/有序集合, Bitmap等等
丰富的功能
键过期功能. 发布-订阅功能(实现消息系统), Lua脚本, 简单的事务, 流水线(Pipeline)
简单稳定
代码少, 早期版本2万行. 3.0版本以后加入集群功能, 5万行. 单线程模型
- 客户端语言多
持久化
(RDB和AOF方式)存放到硬盘中
- 主从复制
高可用和分布式
二. Redis使用场景
- 缓存/session
- 排行榜系统
计数器应用
视频的播放/浏览次数. 并发量太大, 对传统数据库挑战较大
社交网络
赞/踩, 粉丝, 共同好友/喜好等等杂的数据
消息队列系统
主要用于业务解耦
三. Redis安装
使用docker安装redis
四. Redis Shell
redis-server 启动Redis
默认端口6379, 使用
--port xxx
指定端口号
指定配置文件redis-cli 命令行接口
五. Redis使用
1. 全局命令
keys * 查看所有key
dbsize key的数量
exists +key 判断存在几个
del +key 删除几条
expire +key +seconds 设置过期时间
type +key 查看一个可以对应的value类型
set +key +value +ex 添加时可同时设置他的过期时间 ex填过期时间
get +key 获取一个key的值
2. 数据结构和内部编码
2.1 数据结构
- string 字符串
key 都是字符串类型, 而且其他几种数据结构都是在字符串类型基础上构建的.
字符串类型的值实际上可以是简单或复杂的字符串(JSON/XML), 数字, 甚至是二进制(图片, 音频, 视频, 最大512M)
mset, 批量设置值, 可以提高开发效率
mget, 批量获取值
计数,
incr key, ++ 设置自增 (只有value是数字时) 例; incer like:news:1001 有人喜欢就加一
decr key, -- 设置自减
incrby key xx, 设置每次加几个
decrby key xx 设置每次减几个
开发中合理的key名, 业务名:对象名:id:属性
- hash 哈希
hset key field value 存入键值对(一个key 可存入多个key value分多次存)
hget key field 取出键值对
hdel key field 删除摸个键值对属性
hlen key 查看可以有多少属性
hmget key field 批量获取key的多个属性
hmset key field value 批量设置key的多个属性的键值对
hexists key field 判断key的属性是否存在
hkeys key 列出这个key 所有属性的名
hvals key 取出这个key 对应所有的属性的值
hgetall key 列出这个key的所有属性和值
list 列表
存储多个有序的字符串
rpush key value ... 右边插入元素 lpush key value ... 左边插入元素 lrange key start end 取出数据 +开始(0)和结束(?) lpop key 左侧pop 从数组中把左侧pop弹出 lrem key count value 删除 +key +count数量的 +value
set 集合
不允许有重复元素.
同时处理多个集合的交集/并集/差集
sadd key element ... 添加数据 exists key 是否出现 srem key element ... 删除元素 scard key 元素个数 sismember key element 判断是否在集合中 smembers key 列出所有元素
- zset 有序集合
zadd key score member [score member...] 添加(可两个一起添加
zcard key 查看元素数量
zscore key member 查看分数
zrem key member 移除
zincrby key score member 指定key 元素 增长
zrange scores +count +count +witnscores 按key 排序后的数量 +witnscores后面会跟分数