mysql 同步redis

來源:互聯網
上載者:User

標籤:c語言   mysql   local   

官方外掛程式  https://github.com/dawnbreaks/mysql2redis安裝外掛程式 以及依賴// 安裝apr + apr-util$ wget http://mirror.bit.edu.cn/apache//apr/apr-1.5.1.tar.gz$ tar zxvf apr-1.5.1.tar.gz$ ./configure --prefix=/usr/local/apr$ make$ make install$ wget http://mirror.bit.edu.cn/apache//apr/apr-util-1.5.4.tar.gz$ cd apr-util-1.5.4$ ./configure --with-apr=/usr/local/apr$ make$ make install// 安裝hiredis, redis的C語言client$ git clone https://github.com/redis/hiredis$ cd hiredis$ make$ make install$ git clone https://github.com/dawnbreaks/mysql2redis.git$ cd mysql2redis$ make$ cp lib_mysqludf_redis_v2.so /usr/lib64/mysql/plugin/首先要動態庫的正確性 要不然註冊函數就會報錯-bash-4.1# ldd /usr/local/mysql/lib/plugin/lib_mysqludf_redis_v2.so         linux-vdso.so.1 =>  (0x00007fff98f5a000)        libhiredis.so.0.13 => /usr/local/lib/libhiredis.so.0.13 (0x00007f255127e000)        libapr-1.so.0 => /usr/lib64/libapr-1.so.0 (0x00007f2551051000)        libaprutil-1.so.0 => /usr/lib64/libaprutil-1.so.0 (0x00007f2550e2d000)        libc.so.6 => /lib64/libc.so.6 (0x00007f2550a99000)        libuuid.so.1 => /lib64/libuuid.so.1 (0x00007f2550895000)        libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f255065d000)        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f2550440000)        libexpat.so.1 => /lib64/libexpat.so.1 (0x00007f2550218000)        libdb-4.7.so => /lib64/libdb-4.7.so (0x00007f254fea3000)        /lib64/ld-linux-x86-64.so.2 (0x00000038c2800000)        libfreebl3.so => /lib64/libfreebl3.so (0x00007f254fc2c000)        libdl.so.2 => /lib64/libdl.so.2 (0x00007f254fa28000)                保證裡面沒有錯誤的然後註冊 mysq2redis UDF的函數CREATE FUNCTION redis_servers_set_v2 RETURNS int SONAME "lib_mysqludf_redis_v2.so";CREATE FUNCTION redis_command_v2 RETURNS int SONAME "lib_mysqludf_redis_v2.so";CREATE FUNCTION free_resources RETURNS int SONAME "lib_mysqludf_redis_v2.so";下面開始在資料庫裡面建表做測試    我們先在tset裡面建立一張表    CREATE TABLE `user_info` (  `id` int(100) NOT NULL,  `NAME` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,  `age` varchar(11) COLLATE utf8_unicode_ci DEFAULT NULL,  `email` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,  `addr` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;  然後建立 一個insert 跟upudate的觸發器 CREATE TRIGGER `trigger_INSERT` AFTER INSERT ON `user_info` FOR EACH ROW BEGINSET @ret=(select redis_servers_set_v2("6.6.6.6",6379)); SET @ret1=(select redis_command_v2("hmset", concat("user_info:", id), ‘name‘, name, ‘age‘, age, ‘email‘, email, ‘addr‘, addr) from user_info where id = new.id);end;CREATE TRIGGER `trigger_update` AFTER UPDATE ON `user_info` FOR EACH ROW BEGINSET @ret=(select redis_servers_set_v2("6.6.6.6",6379)); SET @ret1=(select redis_command_v2("hmset", concat("user_info:", id), ‘name‘, name, ‘age‘, age, ‘email‘, email, ‘addr‘, addr) from user_info where id = old.id);end;至於觸發器裡面的內容不懂的可以去百度了這裡不做解釋看測試結果先情況redis 裡面的資料6.6.6.6:6379> flushallOK6.6.6.6:6379> keys *(empty list or set)在資料庫裡面插入資料mysql> TRUNCATE table user_info;  # 清空表資料Query OK, 0 rows affected (0.04 sec)mysql> INSERT INTO `user_info` VALUES (1, ‘111‘, 26, ‘[email protected]‘, ‘1111 ‘);進行查詢  mysqlmysql> select * from user_info;+----+------+------+-------------+-------+| id | NAME | age  | email       | addr  |+----+------+------+-------------+-------+|  1 | 111  | 26   | [email protected] | 1111  |+----+------+------+-------------+-------+1 row in set (0.00 sec)mysql> 進行查詢 redis6.6.6.6:6379> keys *(empty list or set)6.6.6.6:6379> keys *1) "user_info:1"6.6.6.6:6379> hgetall user_info:11) "name"2) "111"3) "age"4) "26"5) "email"6) "[email protected]"7) "addr"8) "1111 "6.6.6.6:6379> 到這裡我們就配置完成了


本文出自 “信不信由你” 部落格,轉載請與作者聯絡!

mysql 同步redis

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.