keyvalue键值数据库内存中心化设计内存中心化设计是一种进来十分流行的架构,用于解决web2.0时代数据大量读写带来的性能压力。实现思路:增加缓冲层,利用内存的
key value 键值数据库
内存中心化设计
内存中心化设计是一种进来十分流行的架构,用于解决web2.0时代数据大量读写带来的性能压力。
实现思路:
增加缓冲层,利用内存的高I/O性能
将大量的实时数据以key_value的形式在内存中处理
通过预读和合并写入等技术减少后端数据库的IO压力
key-value数据库简介
memcached 与redis
什么是memcached?
memcached 是一个高性能的分布式内存对象缓存系统,用于动态web应用以减轻数据库负载。他通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态,数据库驱动网站的速度。
memcached 基于一个存储键/值对的hashmap。
web
|
memcached
|
mysql
memcached语法
memcached的服务器客户端通信兵不使用复杂的XML等格式,而是使用简单的基于文本行的协议。因此也可以用telnet在memcached上保存数据,取得数据。
memcached -d -c 10240 -m 1024 -u root
247 ps -ef|grep memcached
248 telnet 127.0.0.1 11211
249 yum install telnet -y
250 telnet 127.0.0.1 11211
mysql-memcached 之间通常没有直接联系,是通过应用程序或者中间件决定的
mysql5.6中加入了一个全新的memcached插件,通过该插件可以非常方便实现mysql与memcached的组合。使得我们可以用memcached语法操作msyql数据库,也可以使用SQL语法来操作memcached,实现了mysql对于nosql的支持
memcached Plugin:innodb——memcached、local cache
基于mysql官方插件的memcached的实现
安装:
如果使用的官方发布的rpm包安装的mysql,那么memcached插件已经附带mysql-server包中了
如果是源码包 安装mysql,则需要在编译过程中加入对应配置项
另外系统中要安装libevent包
cmake -DWITH_INNODB_MEMCACHED=ON
以mysql rpm包来讲 或者二进制包来讲
1,先查看插件存储目录,以及文件
mysql> select @@plugin_dir;
+------------------------------+
| @@plugin_dir |
+------------------------------+
| /usr/local/mysql/lib/plugin/ |
+------------------------------+
1 row in set (0.00 sec)
mysql> Ctrl-C -- exit!
Aborted
[root@host1 ~]# ls /usr/local/mysql/lib/plugin/ | grep memcached
libmemcached.so
2,导入表结构
接下来,导入memcached插件所需要的表结构
[root@host1 ~]# find / -name innodb_memcached_config.sql
/usr/local/mysql/share/innodb_memcached_config.sql
mysql -h 127.0.0.1 -p < /usr/local/mysql/share/innodb_memcached_config.sql
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| innodb_memcache | ********
| mysql |
| performance_schema |
| t9 |
| test |
| viewdb |
+--------------------+
mysql> use innodb_memcache
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_innodb_memcache |
+---------------------------+
| cache_policies |
| config_options |
| containers |
+---------------------------+
3,加载、下载插件命令
之后在mysql中加载插件,使用install命令加载也可以使用uninstall卸载
如果需要重启插件,则需要先uninstall,然后在install
mysql> install plugin daemon_memcached soname 'libmemcached.so';
Query OK, 0 rows affected (0.25 sec)
mysql>uninsall plugin daemon_memcached;
4,查看插件配置信息
mysql> show variables like '%memcache%';
+----------------------------------+------------------+
| Variable_name | Value |
+----------------------------------+------------------+
| daemon_memcached_enable_binlog | OFF | 是否把memcached操作的数据记录在binlog中,默认是关闭
| daemon_memcached_engine_lib_name | innodb_engine.so |
| daemon_memcached_engine_lib_path | |
| daemon_memcached_option | |
| daemon_memcached_r_batch_size | 1 |
| daemon_memcached_w_batch_size | 1 |
+----------------------------------+------------------+
6 rows in set (0.00 sec)
5.检查memcached状态
[root@host1 ~]# ps axu | grep memcached
root 10783 0.0 0.0 331864 136 ? Ssl Jan20 0:01 memcached -d -c 10240 -m 1024 -u root
root 12570 0.0 0.1 103244 836 pts/2 S+ 01:39 0:00 grep memcached
[root@host1 ~]# netstat -tnlp | grep 11211