日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis系列:使用 Redis Module 扩展功能

發布時間:2024/1/18 数据库 31 coder
生活随笔 收集整理的這篇文章主要介紹了 Redis系列:使用 Redis Module 扩展功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

★ Redis24篇集合

1 啥是Redis Module

Redis Module是Redis的一種擴展模塊,從 4.0版本開始,允許用戶自定義擴展模塊,在Redis內部實現新的數據類型和功能,使用統一的調用方式和傳輸協議格式擴展Redis的能力。它本身的設計目的就是在不同版本的Redis中運行,因此無需重新編譯模塊即可與特定版本(Redis > 4.0)一起運行。

通過使用Redis Module,可以在Redis中添加新的命令和數據類型,以實現更高級的功能。例如,一些第三方模塊支持全文搜索、JSON數據的存儲和查詢、自定義分布式鎖、時間序列數據的存儲和查詢等。我們也可以基于 Redis 去定制開發屬于自己的 Module,來支撐自己的業務發展。

2 有哪些常見的Redis Module

目前,被 Redis 官方推薦的 Module 有:

2.1 RediSearch

一個功能齊全,可實現 快速檢索、二次索引和全文搜索的搜索引擎模塊

地址:https://github.com/RediSearch/RediSearch

2.2 RedisJSON

RedisJSON是一個用于處理 JSON 數據的模塊,它實現了JSON數據交換標準,允許從Redis 文檔中存儲、更新和獲取JSON值。
地址:https://github.com/RedisJSON/RedisJSON

2.3 RedisTimeSeries

RedisTimeSeries是Redis的一個時間序列數據庫(TSDB)管理模塊。RedisTimeSeries可以保存多個時間序列,每個時間序列都可以通過一個Redis鍵訪問(類似于任何其他Redis數據結構)。
地址:https://github.com/RedisTimeSeries/RedisTimeSeries

2.4 RedisGraph

用于實現圖形數據庫的模塊
https://github.com/RedisGraph/RedisGraph?tab=readme-ov-file#trying-redisgraph

2.5 RedisBloom

RedisBloom為Redis增加了一組概率數據結構,包括Bloom filter(布隆過濾器), Cuckoo filter, Count-min sketch, Top-K和t-digest。使用此功能,您可以查詢流數據,而無需存儲流的所有元素。每種概率數據結構都應對不同的業務場景。
地址:https://github.com/RedisBloom/RedisBloom

2.6 RedisCell

實現分布式限流能力的模塊,使用了相對精妙的算法 generic cell rate algorithm (GCRA) 。
地址:https://github.com/brandur/redis-cell

2.7 RedisAI

RedisAI是一個Redis模塊,用于執行深度學習/機器學習模型并管理其數據。它的目的是成為模型服務的“主力軍”,為流行的DL/ML框架提供開箱即用的支持和無與倫比的性能。RedisAI堅持數據本地化原則,最大限度地提高了計算吞吐量,減少了延遲。
地址:https://github.com/RedisAI/RedisAI

上面給出的幾個都是GitHub小星星比較高的模塊,如果你想要了解很多的內容,可以參考官方文檔:https://redis.io/modules。

3 Redis module 實踐指南

3.1 安裝Redis

因為這些擴展模塊是依賴于Redis服務存在的,所以前提是Redis安裝完成。
Redis官方安裝指南:https://redis.io/docs/install/install-redis/

3.2 以RedisJson 為例子

3.2.1 下載RedisJSON

github上下載ReJSON的地址:https://github.com/RedisJSON/RedisJSON/releases
官方使用文檔:https://redis.io/docs/data-types/json/
可以看到,最新的版本是 v2.6.8

3.2.2 安裝

1、獲取文件

在 redis 安裝目錄下新建 module 文件夾,把獲取到的rejson.so文件 放到 module 文件夾中

# 先進入redis的安裝目錄
cd /usr/local/soft/redis-6.2.6/

# 然后新建一個module文件夾
mkdir module

# 最后rejson.so文件放到module文件夾即可

2、修改配置

# 進入到module目錄下
cd ./module

# 為文件加X,即修改rejson.so為可執行文件
chmod +x rejson.so

# 修改 redis.conf,初始時自動 loadmodule
loadmodule /usr/local/soft/redis-6.2.6/module/rejson.so

# 重啟 redis
redis-cli -a 123456 shutdown
redis-server conf/redis.conf
redis-cli -p 6379

3.2.3 RedisJSON操作實踐

1、寫入JSON.SET

語法解析

JSON.SET <key> <path> <json>  [NX | XX]
  • key:要操作的鍵。
  • path:JSON路徑,用于指定要設置值的對象或數組的路徑。
  • json:要設置的JSON值。
  • [NX | XX]:可選參數,用于指定操作的條件。
    • NX:僅當指定的鍵不存在時,才設置值。
    • XX:僅當指定的鍵存在時,才設置值。

比如下面,保存兩條數據

# 保存兩條記錄
127.0.0.1:6379> JSON.SET user1 $ '{"name":"Brand", "age":18, "sex":"1"}'
127.0.0.1:6379> JSON.SET user2 $ '{"name":"Candy", "age":17, "sex":"0"}'

2、讀取操作JSON.GET

語法解析

JSON.GET <key>
         [INDENT indentation-string]
         [NEWLINE line-break-string]
         [SPACE space-string]
         [path ...]
  • Key:要獲取值的鍵
  • INDENT:查詢結果替換掉默認縮進字符
  • NEWLINE:查詢結果替換掉默認換行符
  • SPACE:查詢結果替換掉默認空格
  • path:允許使用多個path進行查詢
  • 獲取JSON對象中的屬性時需要以.開頭

比如下面,獲取相關信息

# 得到myjson的所有數據
127.0.0.1:6379> JSON.GET user1
1) '{"name":"Brand", "age":18, "sex":"1"}'

# 得到json數據中的鍵name的值
127.0.0.1:6379> JSON.GET user1 name
1) "Brand"

3、批量讀取操作JSON.MGET

這是一個批量操作的語法,語法解析:

JSON.MGET <key> [key ...] <path>
  • key:是一個列表,指的是可以有多個key
  • path:指所有key的path,即遍歷每一個key的path,如果不存在,則返回null

下面的語句演示MGET獲取批量數據:

127.0.0.1:6379> JSON.MGET user1 user2 $.name
1) "Brand"
2) "Candy"

4、除操作JSON.DEL
這是刪除操作的語法,語法解析:

JSON.DEL <key> [path]
  • path是可選參數,如果沒有提供,則默認整個Key刪除掉

下面語句中

# 刪除整個Json
127.0.0.1:6379> JSON.DEL user1
(integer) 1

# 刪除某個字段
127.0.0.1:6379> JSON.DEL user2  $.age
1) "17"

5、其他操作類行
除了上面的幾種常見操作,官方還支持如下命令,官方命令地址:https://redis.io/docs/data-types/json/
常用命令(數字可以遞增、相乘):

# JSON.NUMINCRBY,JSON.NUMMULTBY,JSON.STRAPPEND,JSON.STRLEN

> JSON.SET num $ 0
OK
> JSON.NUMINCRBY num $ 1
"[1]"
> JSON.NUMINCRBY num $ 1.5
"[2.5]"
> JSON.NUMINCRBY num $ -0.75
"[1.75]"
> JSON.NUMMULTBY num $ 24
"[42]"

數組命令:

#  JSON.ARRAPPEND,JSON.ARRINDEX,JSON.ARRINSERT,JSON.ARRLEN,JSON.ARRPOP,JSON.ARRTRIM

> JSON.SET arr $ []
OK
> JSON.ARRAPPEND arr $ 0
1) (integer) 1
> JSON.GET arr $
"[[0]]"
> JSON.ARRINSERT arr $ 0 -2 -1
1) (integer) 3
> JSON.GET arr $
"[[-2,-1,0]]"
> JSON.ARRTRIM arr $ 1 1
1) (integer) 1
> JSON.GET arr $
"[[-1]]"
> JSON.ARRPOP arr $
1) "-1"
> JSON.ARRPOP arr $
1) (nil)

對象命令(對象長度和key值輸出):

#  JSON.OBJKEYS,JSON.OBJLEN

> JSON.SET obj $ '{"name":"Leonard Cohen","lastSeen":1478476800,"loggedOut": true}'
OK
> JSON.OBJLEN obj $
1) (integer) 3
> JSON.OBJKEYS obj $
1) 1) "name"
   2) "lastSeen"
   3) "loggedOut"

組件命令:
JSON.TYPE,JSON.DEBUG,JSON.FORGET,JSON.RESP

4 總結

本文介紹了Redis的擴展模塊Redis Module,設計目的就是使用加載Redis Module,在Redis中添加新的命令和數據類型,以實現更高級的功能。
文章介紹了目前官方推薦的幾個Module,并演示了RedisJSON的效果。

總結

以上是生活随笔為你收集整理的Redis系列:使用 Redis Module 扩展功能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。