1. 概述
Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串 string、列表 list、集合 set、散列表 hashmap、有序集合 sortedset。
Redis 支持很多特性,例如将内存中的数据持久化到硬盘中,使用复制来扩展读性能,使用分片来扩展写性能。
2. 数据类型
数据类型 | 可存储值 | 操作 |
---|---|---|
STRING | 字符串、整数或者浮点数 | 对整个字符串或者字符串的其中一部分执行操作 对整数和浮点数执行自增或者自减操作 |
LIST | 列表 | 从两端压入或者弹出元素 对单个或者多个元素进行修剪, 只保留一个范围内的元素 |
SET | 无序集合 | 添加、获取、移除单个元素 检查一个元素是否存在于集合中 计算交集、并集、差集 从集合里面随机获取元素 |
HASH | 包含键值对的无序散列表 | 添加、获取、移除单个键值对 获取所有键值对 检查某个键是否存在 |
ZSET | 有序集合 | 添加、获取、删除元素 根据分值范围或者成员来获取元素 计算一个键的排名 |
3. 使用场景
计数器
可以对 String 进行自增自减运算,从而实现计数器功能。
Redis 这种内存型数据库的读写性能非常高,很适合存储频繁读写的计数量。
缓存
将热点数据放到内存中,设置内存的最大使用量以及淘汰策略来保证缓存的命中率。
查找表
例如 DNS 记录就很适合使用 Redis 进行存储。
查找表和缓存类似,也是利用了 Redis 快速的查找特性。但是查找表的内容不能失效,而缓存的内容可以失效,因为缓存不作为可靠的数据来源。
消息队列
List 是一个双向链表,可以通过 lpush 和 rpop 写入和读取消息
不过最好使用 Kafka、RabbitMQ 等消息中间件。
会话缓存
可以使用 Redis 来统一存储多台应用服务器的会话信息。
当应用服务器不再存储用户的会话信息,也就不再具有状态,一个用户可以请求任意一个应用服务器,从而更容易实现高可用性以及可伸缩性。
分布式锁实现
在分布式场景下,无法使用单机环境下的锁来对多个节点上的进程进行同步。
可以使用 Redis 自带的 SETNX 命令实现分布式锁,除此之外,还可以使用官方提供的 RedLock 分布式锁实现。
其它
Set 可以实现交集、并集等操作,从而实现共同好友等功能。
ZSet 可以实现有序性操作,从而实现排行榜等功能。
4. Redis 可视化工具
下面推荐 4 款开源管理工具
a) Redis Desktop Mananger
开源地址:https://github.com/uglide/RedisDesktopManager/releases
b) AnotherRedisDesktopManager
Another Redis Desktop Manager 是一款非常好用的 Redis 可视化管理工具,开源免费,兼容 Windows、macOS 和 Linux,性能出众。
开源地址:https://github.com/qishibo/AnotherRedisDesktopManager/
c) QuickRedis
QuickRedis 是也是一款非常好用的 Redis 可视化管理工具。开源免费,兼容 Windows、macOS 和 Linux。它支持直连、哨兵、集群模式,支持亿万数量级的 key。
开源地址:https://github.com/quick123official/quick_redis_blog
d) IRedis
IRedis 是一个支持自动补全和语法高亮 的 Redis 命令行工具,可用来替代 redis-cli。使用 IRedis 可以流畅地输入 Redis 命令,显示结果也非常友好。
开源地址:https://github.com/laixintao/iredis https://github.com/laixintao/iredis
e) Redis Commander
Redis Commander 是一款用 node.js 编写的 Redis 网页管理工具。
开源地址:https://github.com/joeferner/redis-commander https://github.com/joeferner/redis-commander
f) Redis Studio
目录
Redis系列之-—Redis-cli命令总结 https://www.cnblogs.com/liuyitan/p/16296224.html
Redis系列之-—如何测试 Redis 缓存?https://www.cnblogs.com/liuyitan/p/16294956.html
Redis系列之-—内存淘汰策略(笔记)https://www.cnblogs.com/liuyitan/p/12082657.html