mysql2redis这个项目主要解决mysql数据跟redis数据同步的问题
目前在测试环境研究这方面的应用,以下是git上面的介绍
Dependencies
please download the dependencies below and compile/install it properly :
- apr-1.4.6(http://apr.apache.org/download.cgi)
- apr-util-1.5.2(http://apr.apache.org/download.cgi)
- hiredis(https://github.com/redis/hiredis)
- lib_mysqludf_json(https://github.com/mysqludf/lib_mysqludf_json)
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)
解决方案:运行