mysql2redis

时间:2024-08-21 11:06:38

mysql2redis这个项目主要解决mysql数据跟redis数据同步的问题

目前在测试环境研究这方面的应用,以下是git上面的介绍

git入口    git安装入口

Dependencies

please download the dependencies below and compile/install it properly :

create function lib_mysqludf_json_info returns string soname 'lib_mysqludf_json.so';
  create function json_array returns string soname 'lib_mysqludf_json.so';
  create function json_members returns string soname 'lib_mysqludf_json.so';
  create function json_object returns string soname 'lib_mysqludf_json.so';
  create function json_values returns string soname 'lib_mysqludf_json.so';

Compile

run make from the src dir directly.

  make

Install redis udf

please make sure that the lib_mysqludf_redis_v2.so has been put into the mysql plugin dir. By the way, you can examine where is the mysql plugin dir by run ''' mysql_config --plugindir '''. and then connect to your mysql server, run the following command to install the the redis udf.

DROP FUNCTION IF EXISTS redis_servers_set_v2;
DROP FUNCTION IF EXISTS redis_command_v2;
DROP FUNCTION IF EXISTS free_resources; 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";

Test redis udf

connect to your mysql server, run the following command to test the the redis udf.

select redis_command_v2("lpush","crmInboxEvents11",json_object(json_members("op","insert","value","valuettt")));

select redis_servers_set_v2("192.168.0.118",6379);
select redis_command_v2("lpush","crmInboxEvents11",json_object(json_members("op","insert","value","valuettt"))); select redis_command_v2("hset","hkey","hfield",json_object(json_members("op","insert","value","valuettt"))); select free_resources();
select redis_servers_set_v2("192.168.0.118",6379);

What's more

you should create a trigger which will lpush the newly modified data to redis list juste as the following example:

DELIMITER $$
CREATE TRIGGER insert_trigger AFTER INSERT ON email_folder
FOR EACH ROW BEGIN
SET @ret=
redis_command_v2("lpush","crmInboxEvents",
json_object
(
json_members
(
"op",
"insert",
"value",
json_object
(
NEW.Id as "id",NEW.type as "type",
NEW.mailserver_id as "mailserverId",NEW.sender as "sender",
NEW.sender_name as "senderName",NEW.recevier as "recevier",
NEW.replyto as "replyto",NEW.bbemails as "bbemails",
NEW.ccemails as "ccemails",NEW.subject as "subject"
)
)
)
);
END$$
DELIMITER ; 安装链接

1.先装着gi工具

git clone https://github.com/jackeylu/mysql2redis.git

2.下载mysql2redis

git clone http://github.com/redis/hiredis

3.下载hiredis

git clone http://github.com/redis/hiredis

4.安装hiredis

cd hiredis

make && make install

5.安装mysql2redis

5.1.cp /usr/local/mysql/bin/mysql_config /usr/bin/ 

解决方案:修改src/lib_mysqludf_redis.c下面的285行,将ld修改成lld。

ERROR 1126 (HY000) at line 20: Can't open shared library 'lib_mysqludf_redis.so' (errno: 0 libhiredis.so.0.10: cannot open shared object file: No such file or directory)

解决方案:运行

 sudo /sbin/ldconfig