前言

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#项目集成的更多相关文章

  1. Apollo简介及项目集成

    1. 产生背景 随着程序功能的日益复杂,程序的配置日益增多:各种功能的开关.参数的配置.服务器的地址…… 对程序配置的期望值也越来越高:配置修改后实时生效,灰度发布,分环境.分集群管理配置,完善的权限 ...

  2. SkyWalking APM8.1.0 搭建与项目集成使用

    SkyWalking介绍 SkyWalking是什么? SkyWalking是一个可观测性分析平台和应用性能管理系统,提供分布式跟踪.服务网格遥测分析.度量聚合和可视化一体化解决方案,并支持多种开发语 ...

  3. Taurus.MVC 微服务框架 入门开发教程:项目集成:1、服务端:注册中心、网关(提供可运行程序下载)。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...

  4. Taurus.MVC 微服务框架 入门开发教程:项目集成:2、客户端:ASP.NET Core(C#)项目集成:应用中心。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...

  5. Taurus.MVC 微服务框架 入门开发教程:项目集成:5、统一的日志管理。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...

  6. Taurus.MVC 微服务框架 入门开发教程:项目集成:4、默认安全认证与自定义安全认证。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 本系列第一篇:Taurus.MVC V3.0.3 微服务开源框架发布:让.NET 架构在大并发的演进过程更简单 ...

  7. Taurus.MVC 微服务框架 入门开发教程:项目集成:3、客户端:其它编程语言项目集成:Java集成应用中心。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...

  8. Taurus.MVC 微服务框架 入门开发教程:项目集成:6、微服务间的调用方式:Rpc.StartTaskAsync。

    系统目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...

  9. 现有iOS项目集成React Native过程记录

    在<Mac系统下React Native环境搭建>配置了RN的开发环境,然后,本文记录在现有iOS项目集成React Native的过程,官方推荐使用Cocoapods,项目一开始也是使用 ...

  10. Vuejs实例-02Vue.js项目集成ElementUI

    Vuejs实例-02Vue.js项目集成ElementUI 0:前言 vue.js的UI组件库,在git上有多个项目,我见的使用者比较多的是iView和Element.两个组件库,组件都很丰富. 官网 ...

随机推荐

  1. C++面试八股文:了解位运算吗?

    某日二师兄参加XXX科技公司的C++工程师开发岗位第12面: 面试官:了解位运算吗? 二师兄:了解一些.(我很熟悉) 面试官:请列举以下有哪些位运算? 二师兄:按位与(&).按位或(|).按位 ...

  2. 从零实现俄罗斯方块(c语言+思路分析)

    俄罗斯方块 文章说明: 本文大部分参考至俄罗斯方块(C语言实现)_c语言俄罗斯方块_2021dragon的博客-CSDN博客,本人经过修改编辑,改变了文章的一些思路顺序,使得新手便于理解(个人想法). ...

  3. 跨越HTTP无状态边界:Cookie与Session在Django中的实战应用

    本文深入探索了Django中的Cookie和Session,解析了如何应对HTTP协议的无状态性问题,说明其基础概念,分析工作原理,并讨论何时应选择使用Cookie或Session.文章进阶部分,提出 ...

  4. 我是如何组织 Go 代码的(目录结构 依赖注入 wire)

    背景 对于大多数 Gopher 来说,编写 Go 程序会直接在目录建立 main.go,xxx.go,yyy.go-- 不是说不好,对于小型工程来说,简单反而简洁明了,我也提倡小工程没必要整一些花里胡 ...

  5. 2023年郑州轻工业大学校赛邀请赛myh

    赛程回顾和赛后总结 赛程回顾 although 昨天刚复盘的,但还是记不住题号.就口胡下是那类型题吧. 刚开始时,我和队长先看的a,让jc去找签到题.我们看了下a,队长说可能dp,但还是感觉没啥思路就 ...

  6. Codeforces Round #888 (Div. 3) A-G

    比赛链接 A 代码 #include <bits/stdc++.h> using namespace std; using ll = long long; bool solve() { i ...

  7. 2021-7-12 VUE的增删改查功能简单运用

    Vue增删改查简易实例 <!DOCTYPE html> <html> <head> <title> </title> <style t ...

  8. Angular与AngularJS区别

    简单介绍 目前 Angular 2 到現在 Angular 11 都是十分穩定的改版,不再出現之前 Angular 1.x 到 Angular 2.x 的哀鴻遍野. 因此目前市面上確實同時存在著兩種差 ...

  9. quarkus依赖注入之四:选择注入bean的高级手段

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是<quarkus依赖注入> ...

  10. html标签tr td是什么意思

    <table>代表表格</table><tr>代表表格中的一行</tr><td>代表表格中的一列</td>'tr'与'td'交成 ...