<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>

          mysql_redis在?MySQL?中操作?Redis?

          聯(lián)合創(chuàng)作 · 2023-10-01 00:27

          MySQL-Redis

          什么是 MySQL-Redis ?

          MySQL-Redis 是一款可以在 MySQL 中操作 Redis 的一個(gè)UDF (MySQL 用戶自定義函數(shù)插件)

          MySQL-Redis 可以操作 Redis 集群?jiǎn)幔?/h3>

          可以的, MySQL-Redis 可以操作單例或者集群 Redis,操作的唯一的區(qū)別就是 MySQL 函數(shù)不一樣而已

          性能怎么樣?

          性能這個(gè)取決于網(wǎng)絡(luò), 實(shí)例操作 Redis 速度很快。因?yàn)槭褂?C 語(yǔ)言開(kāi)發(fā)

          使用場(chǎng)景 ?

          可以使用在需要 Redis 和 MySQL 數(shù)據(jù)一致性的地方。

          示例

          SELECT RedisConnect("127.0.0.1", 6379);
          
          BEGIN;
          
          UPDATE books SET price = 10.5 WHERE id = 10;
          SELECT RedisRawCommand("SET id:10:price 10.5");
          
          COMMIT;
          
          SELECT RedisConnectFree();

          上面示例展示了,在事務(wù)中處理數(shù)據(jù),達(dá)到 Redis 和 MySQL 數(shù)據(jù)一致性的解決辦法,當(dāng)然也可以在觸發(fā)器中使用。

          MySQL-Redis 函數(shù)

          • RedisConnect("127.0.0.1", 6379)

            單例 Redis 連接,第二個(gè)參數(shù)可以省略,默認(rèn)端口 6379

            對(duì)應(yīng) SQL 代碼:

            SELECT RedisConnect("127.0.0.1", 6379);
          • RedisClusterConnect

            Redis 集群連接

            對(duì)應(yīng) SQL 代碼:

            SELECT RedisClusterConnect("127.0.0.1:6379,127.0.0.2:6379");

            多個(gè)機(jī)器之間采用,隔開(kāi)

          • RedisConnectFree

            對(duì)應(yīng) RedisConnect() 的連接釋放

            操作完成后,如果需要手動(dòng)釋放,需要調(diào)用本方法,目前暫未實(shí)現(xiàn)連接池,后續(xù)版本實(shí)現(xiàn)

            對(duì)應(yīng) SQL 代碼:

            SELECT RedisConnectFree();
          • RedisClusterConnectFree

            對(duì)應(yīng) RedisClusterConnect() 的連接釋放

            操作完成后,如果需要手動(dòng)釋放,需要調(diào)用本方法,目前暫未實(shí)現(xiàn)連接池,后續(xù)版本實(shí)現(xiàn)

            使用方法:

            SELECT RedisClusterConnectFree();
          • RedisSet

            設(shè)置鍵值對(duì)的快捷方法

            對(duì)應(yīng) SQL 代碼:

            SELECT RedisSet("a", 1); -- 等同于 Redis中的語(yǔ)句: SET a 1
          • RedisClusterSet

            設(shè)置鍵值對(duì)的集群方法方法,參數(shù)等同于 RedisSet 函數(shù),見(jiàn)上面

          • RedisExecCommand

            執(zhí)行 Redis 語(yǔ)句,包含三個(gè)或者兩個(gè)參數(shù),如下 SQL:

            三個(gè)參數(shù)的 SQL 方法:

            SELECT RedisExecCommand("SET", "a", 1);

            兩個(gè)參數(shù)的 SQL 方法:

            SELECT RedisExecCommand("SELECT", 1);
          • RedisClusterExecCommand

            集群操作方法,參數(shù)等同于上面單例:RedisExecCommand

          • RedisRawCommand

            執(zhí)行 Redis 語(yǔ)句,由用戶提供一個(gè)完整的 Redis 語(yǔ)句

            SQL 代碼如下:

            SELECT RedisRawCommand("SET Hello World");
          • RedisClusterRawCommand

            集群模式的 RedisClusterRawCommand 方法,參數(shù)等同于 單例的 RedisRawCommand

          • RedisListIndex

            獲取 Redis List 數(shù)據(jù)結(jié)構(gòu)的某一項(xiàng),第一項(xiàng)表示 Redis 數(shù)據(jù)結(jié)構(gòu),第二項(xiàng)表示索引值,如:

            SELECT RedisListIndex(RedisRawCommand("LRANGE score_lists 0 10"), 1);
          • RedisListJoin

            將 Redis List 數(shù)據(jù)結(jié)構(gòu)的所有項(xiàng)通過(guò)第二個(gè)參數(shù)合并為一個(gè)字符串,如:

            SELECT RedisListJoin(RedisRawCommand("LRANGE score_lists 0 10"), "-");
            // 假設(shè) Redis List score_lists結(jié)構(gòu)如下:
            // 0 1 2
            // 那么合并結(jié)果:
            // 0-1-2

          返回值

          1:

          RedisSET 、 RedisClusterSet 、RedisConnect 、RedisConnectFree 、 RedisClusterConnect 、 RedisClusterConnectFree 成功的情況下返回 1,否則 SQL 語(yǔ)句錯(cuò)誤

          2:

          RedisExecCommand 、 RedisClusterExecCommand 、RedisRawCommand 、RedisClusterRawCommand、RedisListIndex 、RedisListJoin 返回字符串,具體如下:

          • OK

            在執(zhí)行 Redis SET 命令的時(shí)候返回 "OK" 表示成功,否則就表示錯(cuò)誤信息

          • 其他字符串

            執(zhí)行 GET 命令的時(shí)候 返回具體值

          怎么安裝 ?

          前提條件:

          電腦安裝 Redis 、MySQL (開(kāi)發(fā)機(jī)器 MySQL 5.7.22)、hiredis-vip

          準(zhǔn)備好前提條件后,開(kāi)始 MySQL-Redis 插件的編譯安裝過(guò)程

          1. git clone 代碼庫(kù)

            git clone  https://gitee.com/josinli/mysql_redis.git
          2. 修改 CMakeLists.txt 文件,因?yàn)榇a庫(kù)采用 CMake 編譯系統(tǒng):

            cmake_minimum_required(VERSION 3.13)
            project(udf_str C)
            
            set(CMAKE_C_STANDARD 99)
            
            include_directories(
                .
                /usr/local/mysql/include/      # 把這行更改為您系統(tǒng)安裝mysql的頭文件目錄
                /usr/local/include/hiredis-vip # 把這行更改為您系統(tǒng)安裝hiredis-vip的頭文件目錄
            )
            
            link_directories(
                /usr/local/lib    						 # 把這行更改為您洗的 hiredis-vip的lib安裝目錄
            )
            
            add_library(udf_redis SHARED library.c library.h)
            
            target_link_libraries(udf_redis hiredis_vip)
          3. 更改完成后,執(zhí)行下面的操作

            cd build
            cmake ..
            make 
          4. 可以看到 build 目錄生成了庫(kù)文件 libudf_redis.so 或者 libudf_redis.dylib

          5. 進(jìn)入您的 MySQL,執(zhí)行如下 SQL 語(yǔ)句找到您的 MySQL 插件目錄:

            SHOW VARIABLES LIKE 'plugin_dir%';
          6. 拷貝上面第四步中的 libudf_redis.so 或者 libudf_redis.dylib 到第五步中的目錄中

          7. 針對(duì)您的系統(tǒng),linux 系統(tǒng)拷貝 create_function_linux.sql 或者 OSX 系統(tǒng)拷貝 create_function_osx.sql 并執(zhí)行

          8. 重啟您的 MySQL,開(kāi)始在 SQL 中愉快的體驗(yàn) Redis 吧!

          瀏覽 26
          點(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>
                  高清无码视频免费 | 91牛视频| 翔田千里无码免费播放 | 天堂AV2014 | 国产一区二区三区黄片 |