redis
相关概念
redis特点
- 高性能,可持久化
- key-value结构,支持多种数据类型
- 支持事务,数据的原子性
应用场景
- 缓存(读写性能优异)
- 计数&消息系统(高并发、发布/订阅阻塞队列功能)
- 分布式回话session&分布式锁(秒杀)
redis vs mongo
- 储存方式不一样:key-value vs document
- 使用方式&可靠性不一样: MongoDB SQL & ACDI支持
- 应用场景不一样:高性能缓存 vs 海量数据分析
使用docker 安装redis
Docker-compose配置
在linux服务器中,新建/home/redistest/docker-compose.yml
,并书写以下内容
1 | version: "3" |
然后在当前目录运行docker-compose up -d
会自动抓取redis 并运行在15001端口
然后运行linux端口放行firewall-cmd --zone=public --add-port=15001/tcp --permanent
使用redis-cli
- 进入容器交互终端
docker exec -it redis-test /bin/bash
- 输入 redis-cli 回车
- 输入 auth 123456 // 密码登陆
- 输出OK表示成功
想从镜像终端中出来,输入exit
常用的redis命令
ping ,如果运行正确 会返回pong
quit 断开当前redis 服务
auth 123456 // 登陆
select number 切换自动数据库,默认有0 - 15
设置数据
- set key value 设置键值
- get key 获取键值
- incr 变量自增 例如 set index 0 ;incr inde ;// 1 计数器
- decr 递减
- keys 正则 (*所有)查看符合条件的键值
- exists key […key] 看键值是否存在 1 存在 0 不存在
- del key 删除键值 1成功 0失败
设置过期时间
- set key value ‘EX’ seconds
Hash
hset obj key value
就像给一个对象设置键值对一样 hset brian name "brian" hset brian age 19 brian = { name: "brian", age: 20 }
1
2
3
4
5
6
7
8
9
- hgetall obj 返回对象的key value对
- ```
hgetall brian
name
brian
age
19Hmset 设置多对键值对
hmset brian name xxx age 19 email ueih@122
1
2
3
4
5
6
7
- Hmget 获取多个键值
- ```
hmget brian name age
xxx
19
list list操作
pub/sub 发布订阅
server命令
- client list 可以查看redis-cli连接的哪些redis-client服务 通过idle空闲时间判断当前使用的
- client kill host:port 断开
- flushdb 清空当前数据库的数据
- flushall 清空所有数据库
slowlog slow log是用来记录执行时间的日子系统
redis备份
save 命令备份(同步任务,会阻塞,使用bgsave) 会生成一个dump.rdb,quit停止服务
CONFIG get dir 找到数据存在位置,把dump.rdb放入,重启服务就可以了
Redis GUI
安装一个破解版的redis desktop manage,可以修改语言为中文,通过gui中的终端服务,可以很轻松的使用
Nodejs 集成 redis
首先安装redis npm install redis --save
redis配置示例如下
1 | import redis from "redis" |
测试
1 | setValue("ceshi", 122333) |
get 、set方法生产模式再次封装一下
1 | / set方法 |