拉取 redis 镜像(alpine 是经典版)redis
docker pull redis:4-alpine
把本机的6379映射到虚拟的6379docker
docker run -it -p 6379:6379 --name redis(名字) redis:4-alpine(下载的镜像名)
进入redisshell
docker exec -it redis /bin/sh
与redis进行交互数据库
redis-cli
速度快数组
基于内存, C语言实现, 单线程架构, 集性能和优雅于一身的代码缓存
REmote DIctionary Server. 值能够是字符串/哈希/列表/集合/有序集合, Bitmap等等
丰富的功能服务器
键过时功能. 发布-订阅功能(实现消息系统), Lua脚本, 简单的事务, 流水线(Pipeline)网络
简单稳定session
代码少, 早期版本2万行. 3.0版本之后加入集群功能, 5万行. 单线程模型数据结构
持久化
(RDB和AOF方式)存放到硬盘中
高可用和分布式
计数器应用
视频的播放/浏览次数. 并发量太大, 对传统数据库挑战较大
社交网络
赞/踩, 粉丝, 共同好友/喜爱等等杂的数据
消息队列系统
主要用于业务解耦
使用docker安装redis
redis-server 启动Redis
默认端口6379, 使用--port xxx
指定端口号
指定配置文件
redis-cli 命令行接口
keys * 查看全部key dbsize key的数量 exists +key 判断存在几个 del +key 删除几条 expire +key +seconds 设置过时时间 type +key 查看一个能够对应的value类型 set +key +value +ex 添加时可同时设置他的过时时间 ex填过时时间 get +key 获取一个key的值
key 都是字符串类型, 并且其余几种数据结构都是在字符串类型基础上构建的. 字符串类型的值实际上能够是简单或复杂的字符串(JSON/XML), 数字, 甚至是二进制(图片, 音频, 视频, 最大512M) mset, 批量设置值, 能够提升开发效率 mget, 批量获取值 计数, incr key, ++ 设置自增 (只有value是数字时) 例; incer like:news:1001 有人喜欢就加一 decr key, -- 设置自减 incrby key xx, 设置每次加几个 decrby key xx 设置每次减几个
开发中合理的key名, 业务名:对象名:id:属性
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 列出全部元素
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后面会跟分数