RedisStack部署/持久化/安全/与C#项目集成
Docker部署RedisStack?呵,基础操作罢了。ACL权限?不过是Redis 6.0的标配功能。C#集成?官方NRedisStack包,一行代码的事。
目录8 个章节
前言
Redis可好用了,速度快,支持的数据类型又多,最主要的是现在可以用来向量搜索了。
本文记录一下官方提供的 redis-stack 部署和配置过程。
关于 redis-stack
redis-stack installs a Redis server with additional database capabilities and the RedisInsight.
redis 提供了俩镜像
redis/redis-stackcontains both Redis Stack server and RedisInsight. This container is best for local development because you can use RedisInsight to visualize your data.redis/redis-stack-serverprovides Redis Stack but excludes RedisInsight. This container is best for production deployment.
区别就是有没有附带 RedisInsight 这个Web管理界面。
我需要使用Web管理界面,所以本文选择的是 redis-stack 这个镜像。
部署
老规矩,使用 docker-compose 部署。
把 Redis 的 6379 端口和 RedisInsight 的 8001 端口映射出来。
version: '3.4'
services:
redis:
image: redis/redis-stack:latest
container_name: redis-stack
restart: always
ports:
- "6379:6379"
- "8001:8001"
volumes:
- ./data:/data
networks:
default:
name: redis-stack
推荐使用 Portainer 来部署和管理镜像。
这里的持久化是通过映射 dump.rdb 文件。
安全与ACL命令
在Redis6.0之前的版本中,登陆Redis Server只需要输入密码(前提配置了密码 requirepass )即可,不需要输入用户名,而且密码也是明文配置到配置文件中,安全性不高。并且应用连接也使用该密码,导致应用有所有权限处理数据,风险也比较高。
在Redis6.0有了ACL之后,终于解决了这些不安全的因素,可以按照不同的需求设置相关的用户和权限。
Redis ACL 是向后兼容的,即默认情况下用户为default,使用的是requirepass配置的密码。要是不使用ACL功能,对旧版客户端来说完全一样。
在 RedisInsight 中的 Workbench 界面可以很方便的执行 Redis 命令,而且左边还有命令教程,太酷了!
几个ACL命令
ACL的命令很简单,而且在 RedisInsight 里还可以补全,这里简单介绍几个:
acl help- 帮助acl list- 列出所有用户acl whoami- 查看当前用户acl setuser- 设置用户,包括我们需要的设置密码也是用这个命令
设置密码
假设要把 default 用户的密码设置为 abc123
ACL SETUSER default on >abc123 sanitize-payload ~* &* +@all
如果不想要密码了,可以用以下命令清除
ACL SETUSER default on nopass sanitize-payload ~* &* +@all
在程序中连接
以 C# 为例
首先安装官方提供的 nuget 包
dotnet add package NRedisStack
demo 代码
using NRedisStack.RedisStackCommands;
using StackExchange.Redis;
var redis = await ConnectionMultiplexer.ConnectAsync("localhost", options => {
options.User = "default";
options.Password = "abc123";
});
var db = redis.GetDatabase();
var json = db.JSON();
// 写入
json.Set("ext:1", "$", new { Age = 35, Name = "Alice" });
// 读取
Console.WriteLine($"读取:{json.Get(key: "ext:1", path: "$", indent: "\t", newLine: "\n")}");
参考资料
_EOF_
RedisStack部署/持久化/安全/与C#项目集成
- 本文作者:
- 程序设计实验室
- 版权声明:
- 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
相关文章
我的2020回顾——技术篇
看着笔记里写了一半的「2019年总结」,总觉得莫名喜感,然后我又想说时间过得真快了,又到了每年写总结复盘的时候,2020年是我长这么大以来经历过最魔幻的一年,疫情、金融危机、世界格局“百年未有之大变”……巨大信息量的冲击下人很难有独立思考的空间和意识,还好本文只是对2020年技术方面的总结,不然不知道要写到什么时候才写完。 首先看一下我主要使用的两个代码托管平台上的代码提交概览,分别是Github
2022-11-07 · 2020 · 约 1 分钟
《修真四万年》飞星界地图通关啦
前言 上次说到最近正在看的这个小说,现在进度终于到了主角把飞星界这个地图通关了。 到目前为止都还不错,没有出现太无脑爽文的剧情
2023-01-22 · 0_网络小说 · 约 1 分钟
使用分形思想,通过图灵完备的机器赛跑关卡,并获得小机快跑成就
本文将用尽量通俗易懂的语言, 为了解过和没了解过图灵完备和分形的读者讲解用分形思想来通过机器赛跑这一关并达成成就“小机快跑”的思路, 同时也将给出实现该思路的汇编代码。
2024-02-06 · 算法/机器学习 · 约 1 分钟
Django快速开发实践:Drf框架和xadmin配置指北
步骤 既然是快速开发,那废话不多说,直接说步骤: 安装Djagno 安装Django Rest Framework 定义models 定义Rest framework的serializers 定义Rest framework的viewsets 配置Rest framework的router 配置管理后台admin 根据需要写template和对应的view 经过这些步骤就能得到一个具备完整的后端接
2022-09-06 · Django · 约 1 分钟
讨论
共 0 条加载评论中…