Redis介绍
Redis简介
Redis 是完全开源的,遵守BSD协议,是一个高性能的key-value数据库。Redis 与其他key-value缓存产品有以下三个特点:
- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份。
Redis优势
- 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
- 丰富的数据类型 – Redis支持二进制案例的Strings, Lists, Hashes, Sets及Ordered Sets数据类型操作。
- 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
- 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
Redis与其他key-value存储的不同之处
- Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。
- Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,应为数据量不能大于硬件内存。在内存数据库方面的另一个优点是, 相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。 同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。
Redis安装和使用
Redis安装
安装Redis可以参考文档,这里使用docker的方式来操作
- 新建测试目录:
mkdir /home/redistest && cd /home/redistest/
- 新建docker-compose.yml文件:
vim docker-compose.yml
,写入如下内容,保存退出,注意此处把端口映射为 15001, 检查防火墙和与云服务器运营商的防火墙端口放行规则。 推荐使用docker-compose来启动容器,它实际上等同于如下执行命名docker run -itd --restart=always --name redis-test -p 15001:6379 -v /home/reidstest:/data redis redis-server --requirepass 123456
注意需要放置在公网访问的redis服务需要考虑几点
1.防火墙规则是否放行,运营商的防火墙是否放行
2.bind的IP需要设置成为0.0.0.0,才能让其他所有的服务访问的到(不过这样做也不太安全,需要设置密码),最好是绑定到指定的IP,并设置访问密码
- 启动容器:
docker-compose up -d
- 查看容器状态:
docker ps -a | grep redis
- 查看redis服务:
docker logs -f redis-test
Redis-cli的使用
- 第一种:进入容器并使用redis-cli连接redis服务通过交互式终端来操作数据库:
docker exec -it redis-test redis-cli
- 这里演示第二种: 先进入容器内的bash终端:
docker exec -it redis-test /bin/bash
接着执行
redis-cli
进入redis-cli交互终端 , 输入auth 123456
进行鉴权quit
退出 redis-cli客户端
String 类型操作命令set
get
keys
del
incr
等等
Hash 类型操作指令hset
hget
hgetall
hmset
等等
List 类型操作指令rpop
lpop
rpush
lpush
等等
订阅 发布subscribe
publish
使用
subscribe
+主题名
订阅主题
使用publish
+主题名
+消息
向对应主题发布消息 - 服务相关 & 备份恢复
client list
、client kill
登录 redis-cli 后,运行
client list
,返回所有连接到服务器的客户端信息和统计数据 idle 代表空闲时长 idle=0 是当前的clientclient kill ip:port
关闭客户端showlog
调试redis的重要命令- 清空数据库的命令
flushall
、flushdb
慎重flushall清空整个 Redis 服务器的数据(删除所有数据库的所有key)。
flushdb清空当前数据库中的所有 key。