使用memcached将mysql用作nosql-表不更新
我是mysql中使用nosql的新手 我已安装并启用memcahed接口,然后遵循以下STPE: -已创建新表“用户”使用memcached将mysql用作nosql-表不更新,mysql,memcached,nosql,Mysql,Memcached,Nosql,我是mysql中使用nosql的新手 我已安装并启用memcahed接口,然后遵循以下STPE: -已创建新表“用户” mysql> CREATE TABLE test.users ( `user_id` varchar(32) NOT NULL DEFAULT '', `first` varchar(100) DEFAULT NULL, `last` varchar(100) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB
mysql> CREATE TABLE test.users (
`user_id` varchar(32) NOT NULL DEFAULT '',
`first` varchar(100) DEFAULT NULL,
`last` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB
-将其添加到contaoners表中
mysql> INSERT INTO containers
(name, db_schema, db_table, key_columns,
value_columns, unique_idx_name_on_key)
VALUES ('default', 'test', 'users', 'user_id', 'first|last', 'PRIMARY');
mysql> select * from innodb_memcache.containers;
+---------+-----------+-----------+-------------+---------------+-------+------------+--------------------+------------------------+
| name | db_schema | db_table | key_columns | value_columns | flags | cas_column | expire_time_column | unique_idx_name_on_key |
+---------+-----------+-----------+-------------+---------------+-------+------------+--------------------+------------------------+
| aaa | test | demo_test | c1 | c2 | c3 | c4 | c5 | PRIMARY |
| default | test | users | user_id | first|last | 0 | NULL | NULL | PRIMARY |
+---------+-----------+-----------+-------------+---------------+-------+------------+--------------------+------------------------+
2 rows in set (0.00 sec)
-使用telnet启动接口,并运行以下命令将值存储到表中
set foo 0 0 14
Jarvis|Badgley
-现在getfoo给出存储的结果
get foo
VALUE foo 0 14
Jarvis|Badgley
END
-但是当我检查mysql表时,这些值并没有被存储
mysql> select * from test.users;
Empty set (0.00 sec)
我不明白为什么更新后的值没有反映在表中
请帮忙 按照您的步骤,我已经能够让它工作了,但有一些修复 首先,用户表定义错误(列'id'不存在)。应该是:
CREATE TABLE test.users (
`user_id` varchar(32) NOT NULL DEFAULT '',
`first` varchar(100) DEFAULT NULL,
`last` varchar(100) DEFAULT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB
如果配置此表:
INSERT INTO containers
(name, db_schema, db_table, key_columns,
value_columns, unique_idx_name_on_key)
VALUES ('default', 'test', 'users', 'user_id', 'first|last', 'PRIMARY');
使用INSTALL插件守护进程_memcached soname“libmemcached.so”启动引擎代码>,您将在mysql.log文件中找到此错误:
InnoDB_Memcached: column 6 in the entry for config table 'containers' in database 'innodb_memcache' has an invalid NULL value
Failed to initialize instance. Error code: 13
因此,您应该为标志
、cas
和到期
定义列,方法如下:
CREATE TABLE test.users (
`user_id` varchar(32) NOT NULL DEFAULT '',
`first` varchar(100) DEFAULT NULL,
`last` varchar(100) DEFAULT NULL,
flags int,
cas bigint unsigned,
expiry int,
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB;
INSERT INTO innodb_memcache.containers
(name, db_schema, db_table, key_columns,
value_columns, flags, cas_column, expire_time_column, unique_idx_name_on_key)
VALUES ('default', 'test', 'users', 'user_id', 'first|last', 'flags', 'cas', 'expiry', 'PRIMARY');
然后,当您重新启用插件时,它将开始工作
telnet localhost 11222
Trying ::1...
Connected to localhost.
Escape character is '^]'.
set key 0 3600 8
John|Doe
STORED
以及查询数据库:
mysql> select * from test.users;
+---------+-------+------+-------+------+------------+
| user_id | first | last | flags | cas | expiry |
+---------+-------+------+-------+------+------------+
| key | John | Doe | 0 | 50 | 1495534750 |
+---------+-------+------+-------+------+------------+
1 row in set (0.00 sec)
如何将mysql连接到memcached或memcached?我已经安装了mysql插件守护程序\u memcachedINSTALL plugin守护程序\u memcached SONAME'libmemcached.so'然后使用telnet启动memcached接口