- 前言:数据库之间的对比与使用场景
Redis:适合于较小数据量,侧重于性能
MongoDB :适合海量数据,侧重于访问效率的提升
一、redis (remote dictionary server)简介
1、使用场景:
DB(数据库);Cache(缓存);MQ(发邮箱)
2、支持的类型
基本数据类型:string list set sortedset和hash
升级的数据类型:
3、 三种使用方法
命令行;API接口;GUI用户界面
RDM: 把数据加载在内存中进行操作 异步操作
redis 数据库单线程的数据库。
系统的集成 可复用的组件 缓存管理机制: 缓存击穿、缓存雪崩
缓存区先记录一下命令的指令,然后在选一个合适的时机进行记录。
二、安装配置
1、windows 里面通过WSL功能进行安装。
docker 安装
安装包 exe 版本较旧
2、使用-redis指令
开启服务器的指令
#windows
redis-server.exe
#Linux/mac
redis-server
停止服务 ctrl + C
开启客户端的指令
redis-cli
三、GUI工具-RedisInsight
下载配置
添加本地的数据库-默认设置
使用,点击这个按钮进入到redis数据库管理服务界面
使用说明
- 数据库管理服务器:可以添加服务器
- 浏览器:可以查看对应的redis数据库中的数据
- 工作台:可以查看手册,执行命令
- 数据分析的工具:可以查看redis的性能和日志等
- 发布订阅者模式工具:
- 命令行;命令手册查询;日志
四、字符串
命令介绍: 采用键值对的方式进行存储; redis 中默认的都是使用字符串来存储数据的,是二进制安全的。这就意味着,redis 数据库支持很多的字符,比如 数字;布尔值,甚至是序列化之后的对象。
具体命令:
- 增加删改查
# 添加键值对
set name geekhour
# 获取键值对
get name
# 添加数字的键值对
set age 23
# 获取数字的键值对
get age
# 删除键值对
del age
# 查看一个值是否存在
exists age
# 查看数据库中所有的键
keys *
# 删除所有的键值对,谨慎使用
FlUSHALL
- 中文的形式显示值,使用以下的命令。redis数据库中键和值都是以二进制的方式存储的,所以默认的是不支持中文的。 可以将中文换成二进制的方式存储。
# 退出
quite
# 再次进入
redis-cli --raw
# 获取中文显示的值
get name
- 清空屏幕
# 清空屏幕
clear
- 创建一个带有过期时间的键和键值对
# 查看过期的时间
# -1:代表没有设置
# -2: 代表过期了
TTL name
# 设置键的过期时间
expire name 10
# 设置键值对的过期时间
setex name 5 time
五、列表
添加列表的规则:将后面插入的值放到列表的最前面,也可以支持插入的值放到最后面。实现一个先进先出队列。
- 增删改查列表
# 添加一个元素到列表
LPUSH letter a
LPUSH letter b
# 查询列表的值
LRANGE letter 0 -1
# 添加多个元素到列表,默认添加到列表的前面
LPUSH letter c d e
# 添加列表的值到后面
RPUSH letter f
# 删除头部列表值
LPOP letter
# 删除尾部列表值
RPOP letter
# 删除多个元素
LPOP/RPOP letter 2
# 查看列表的长度
LLEN letter
# 删除指定范围以外的元素
LTRIM letter 1 3
六、集合
无序集合:键值对不能重复,列表是可以重复的
- 增删改查
# 增加元素
SADD course Redis
# 查询元素
SMEMBERS course
# 判断一个元素是否在集合中
SISMEMBER course Resid
# 删除集合中的元素
SREM course Redis
# 集合之间的运算??
七、有序集合(SortedSet)
有序集合:Zset, 和集合之间的区别是有序集合的每一个元素都会关联一个浮点类型的分数。然后按照这个分数来对集合中元素进行排序。有序集合的的元素是唯一的,但是分数可以重合。排序的顺序一般都是从小到大
- 增删改查
# 增加元素
ZADD result 680 清华 660 北大 650 复旦 640 浙大
# 查询元素
ZRANGE result 0 -1
# 查询元素和值
ZRANGE result 0 -1 WITHSCORES
# 查看某个元素的值
ZSCORE result 清华
# 查看元素的排名
ZRANK result 清华
#反转排序的顺序
ZREVRANK result 清华
# 判断一个元素是否在集合中??
# 删除集合中的元素??
# 集合之间的运算??
- 反转
#反转排序的顺序
ZREVRANK result 清华
八、哈希
哈希:是一个字符类型的字段和值的映射表,简单来说就是一个键值对的集合。特别适合用来存储对象。哈希相关的命令都是以H开头。
# 增加元素
HSET person name laoyao
# 查询元素值
HSET person name
# 查询元素的所有值
HSETALL person
# 判断一个键值对是否存在
HEXISTS person name
# 删除集元素
HDEL person name
# 获取所有的键
HKEYS person
# 获取所有键的数量
HLEN person
九、发布订阅者模式
订阅频道的终端有很多个,可以开启不同的终端接受消息。短板:消息无法持久化,无法查看历史消息。解决方案,可以采用streams 流解决这些问题。
# 订阅一个频道
SUBSCRIBE geekhour
# 将消息发送到指定的频道,向geekhour这个频道发布redis这个信息。
publish geekhour redis
十、消息队列(streams)-- 是更加高级的用法。
注意版本,版本不够的话无法使用新的功能。
streams流:5.6 版本中引入的新的数据结构,
# 添加消息
# *:自动生成代表信息的ID
XADD geekhour * course resdis
# 查看消息的数量
XLEN geekhour
# 查看消息的详细内容
XRANGE geekhour - +
# 删除消息,需要知道消息的ID号。
XDEL geekhour 1684154211
# 删除消息的另外一种方式
XTRIM geekhour MAXLEN 0
# 将消息发送到指定的频道,向geekhour这个频道发布redis这个信息。
publish geekhour redis
- 创建组
# 添加组
XGROUP CREATE geekhour group_one 0
# 查看消息
XINFO GROUPS geekhour
# 查看消息的详细内容
XRANGE geekhour - +
# 删除消息,需要知道消息的ID号。
XDEL geekhour 1684154211
# 删除消息的另外一种方式
XTRIM geekhour MAXLEN 0
# 添加内容到组中
XGROUP CREATECONSUMER geekhour group_one consumer_one
# 发布的消息被消费
XREADGROUP GROUP group_one consumer_one COUNT 2 BLOCK 3000 STREAMS geekhour >
十一、地理空间(Geospatial)
3.2版本的新特性介绍:提供了一种存储地理位置信息的数据结构,同时也支持对地理位置进行各种计算操作。 计算案例:计算两个位置的距离,获取经纬度 GEO开头的案例。
# 添加地理位置信息
GEOADD city 0 0 36.5
# 查看消息
XINFO GROUPS geekhour
# 查看消息的详细内容
XRANGE geekhour - +
# 删除消息,需要知道消息的ID号。
XDEL geekhour 1684154211
# 删除消息的另外一种方式
XTRIM geekhour MAXLEN 0
# 添加内容到组中
XGROUP CREATECONSUMER geekhour group_one consumer_one
# 发布的消息被消费
XREADGROUP GROUP group_one consumer_one COUNT 2 BLOCK 3000 STREAMS geekhour >
十二、查看当前redis 数据库的版本号
客户端输入:info