首页 > 数据库 >RedisStack部署/持久化/安全/与C#项目集成

RedisStack部署/持久化/安全/与C#项目集成

时间:2023-10-07 16:00:45浏览次数:40  
标签:集成 RedisStack C# redis Redis ACL default RedisInsight stack

前言

Redis可好用了,速度快,支持的数据类型又多,最主要的是现在可以用来向量搜索了。

本文记录一下官方提供的 redis-stack 部署和配置过程。

关于 redis-stack

redis-stack installs a Redis server with additional database capabilities and the RedisInsight.

redis 提供了俩镜像

  • redis/redis-stack contains 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-server provides 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")}");

参考资料

标签:集成,RedisStack,C#,redis,Redis,ACL,default,RedisInsight,stack
From: https://www.cnblogs.com/deali/p/17746538.html

相关文章

  • vscode设置文件忽略
    转到顶部菜单中的"文件"(File)>"首选项"(Preferences)>"设置"(Settings)或者您可以使用快捷键Ctrl+,或Cmd+,打开设置。在设置页面中,搜索框内输入"files.exclude" 在这里添加即可 ......
  • Netflix之Actuator
    一、Actuator简介监控应用,上报状态信息二、开启监控<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>三、端点SpringBoot2.0的Actuator默认只暴露了health和info端点1、......
  • 【常用操作】CentOS系统配置远程桌面
    一、前言当前系统使用最小化安装方式,因使用需求变更,需要使用图形化界面操作,此处介绍如何安装图形化界面,并配置远程桌面二、安装部署1、安装图形化界面安装Gnome包yumgroupinstall"GNOMEDesktop""GraphicalAdministrationTools"-y更新系统运行级别ln-sf/lib/sy......
  • 带宽优化新思路:RoCE网卡聚合实现X2增长
    本文分享自华为云社区《2个RoCE网卡Bond聚合,实现带宽X2》,作者:tsjsdbd。我们知道操作系统里面,可以将2个实际的物理网卡,合体形成一个“逻辑网卡”,从而达到如主备/提升带宽等目的。但是RoCE网卡,是否也跟普通网卡一样,支持Bond能力呢?答案是的,RoCE也可以组Bond,只是比普通网卡多了一些......
  • Go - Composing Structs from Other Structs
    Problem: Youwantastructthathasdataandmethodsofanotherstruct. Solution: Embedanunnamedstructwithinanotherstruct.Theouterstructwillgainthedataandmethodsoftheinnerstruct. Inheritanceisnottheonlymechanismyoucanusefor......
  • TALL: Temporal Activity Localization via Language Query
    1introduction确定任务:TALL(TemporalActivityLocalizationviaLanguage):基于文本的时间活动定位,具体来说就是给定给定一个未修剪的视频和一个自然语言查询,目标是确定视频中所描述活动的开始和结束时间。将视觉和文本特征嵌入到公共空间以获得更好效果,但是这样对齐任务(alignme......
  • vue3中defineComponent 的作用详解
    转自:https://www.jb51.net/article/263096.htm 这篇文章主要介绍了vue3中defineComponent 的作用,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 vue3中,新增了defineComponent,它并没有实现任何的逻辑,只是把接收的......
  • c#动态执行字符串脚本(优化版)
    像javascript中有eval()来执行动态代码,c#中是没有的,于是自己动手丰衣足食,先来代码1usingSystem;2usingSystem.Data;3usingSystem.Configuration;4usingSystem.Text;5usingSystem.CodeDom.Compiler;6usingMicrosoft.CSharp;7usingSystem.Re......
  • idea报错:Failed to execute goal org.codehaus.mojo:exec-maven-plugin:3.0.0:exec (d
    idea版本:​​2020.3​​idea报错:在查阅了资料以后发现是​​IDEA2020​​的兼容问题 Failedtoexecutegoalorg.codehaus.mojo:exec-maven-plugin:3.0.0:exec(default-cli)onprojectsms:Commandexecutionfailed.解决方法:1、测试不要用​​main​​方法测试,使用​​......
  • centos7磁盘挂载与LVM扩容
    目录磁盘挂载查看一下现有磁盘创建磁盘分区创建PV(物理卷)创建VG(卷组)创建LV(逻辑卷)格式化分区挂载分区挂载分配文件/etc/fstab扩容逻辑分区创建磁盘分区重读分区表格式化分区扩容VG扩容LV刷新文件系统df-h查看新申请的ECS,磁盘一般不给挂好,非得为难我这菜鸟自己操作磁盘挂......