<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          RedisStack部署/持久化/安全/與C#項(xiàng)目集成

          共 3210字,需瀏覽 7分鐘

           ·

          2023-10-13 17:42

          1前言

          Redis可好用了,速度快,支持的數(shù)據(jù)類型又多,最主要的是現(xiàn)在可以用來(lái)向量搜索了。

          本文記錄一下官方提供的 redis-stack 部署和配置過(guò)程。

          2關(guān)于 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.

          區(qū)別就是有沒(méi)有附帶 RedisInsight 這個(gè)Web管理界面。

          我需要使用Web管理界面,所以本文選擇的是 redis-stack 這個(gè)鏡像。

          3部署

          老規(guī)矩,使用 docker-compose 部署。

          把 Redis 的 6379 端口和 RedisInsight 的 8001 端口映射出來(lái)。

          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 來(lái)部署和管理鏡像。

          這里的持久化是通過(guò)映射 dump.rdb 文件。

          4安全與ACL命令

          在Redis6.0之前的版本中,登陸Redis Server只需要輸入密碼(前提配置了密碼 requirepass )即可,不需要輸入用戶名,而且密碼也是明文配置到配置文件中,安全性不高。并且應(yīng)用連接也使用該密碼,導(dǎo)致應(yīng)用有所有權(quán)限處理數(shù)據(jù),風(fēng)險(xiǎn)也比較高。

          在Redis6.0有了ACL之后,終于解決了這些不安全的因素,可以按照不同的需求設(shè)置相關(guān)的用戶和權(quán)限。

          Redis ACL 是向后兼容的,即默認(rèn)情況下用戶為default,使用的是requirepass配置的密碼。要是不使用ACL功能,對(duì)舊版客戶端來(lái)說(shuō)完全一樣。

          在 RedisInsight 中的 Workbench 界面可以很方便的執(zhí)行 Redis 命令,而且左邊還有命令教程,太酷了!

          幾個(gè)ACL命令

          ACL的命令很簡(jiǎn)單,而且在 RedisInsight 里還可以補(bǔ)全,這里簡(jiǎn)單介紹幾個(gè):

          • acl help - 幫助
          • acl list - 列出所有用戶
          • acl whoami - 查看當(dāng)前用戶
          • acl setuser - 設(shè)置用戶,包括我們需要的設(shè)置密碼也是用這個(gè)命令

          設(shè)置密碼

          假設(shè)要把 default 用戶的密碼設(shè)置為 abc123

          ACL SETUSER default on >abc123 sanitize-payload ~* &* +@all

          如果不想要密碼了,可以用以下命令清除

          ACL SETUSER default  on nopass sanitize-payload ~* &* +@all

          5在程序中連接

          以 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();

          // 寫(xiě)入
          json.Set("ext:1""$"new { Age = 35, Name = "Alice" });

          // 讀取
          Console.WriteLine($"讀取:{json.Get(key: "ext:1", path: "$", indent: "\t", newLine: "\n")}");

          6參考資料

          • https://hub.docker.com/r/redis/redis-stack
          • https://www.cnblogs.com/zhoujinyi/p/13222464.html
          • https://redis.io/docs/management/security/acl/


          瀏覽 197
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  色婷婷精品 | 乱伦激情av | 亚洲高清无码免费在线观看 | 欧美性爱网址 | 亚洲天堂无码高清 |