• [原创]测试memcached


     

    1.安装并测试repcached

     

    1.下载memcached-1.2.8-repcached-2.2.1.tar.gz

    地址:http://sourceforge.net/projects/repcached/files/repcached/2.2.1-1.2.8/

     

    2. server2server3上分别安装repcached

     

    首先安装libeventlibevent-devel:

    [root@server2 Share]# rmp -ivh libevent-1.4.13-4.el6.x86_64.rpm

    [root@server2 Share]# rmp -ivh libevent-devel-1.4.13-4.el6.x86_64.rpm

     

    或者在CentOS下直接运行 yum libevent libevent-devel

     

    安装repcached

    [root@server3 bin]# ./configure --enable-replication --program-transform-name=s/memcached/repcached/

    [root@server3 bin]# make

    [root@server3 bin]# make install

     

    3.启动repcached

    切换到非root用户

    [root@server3 bin]# su admin

    server2 上以master身份运行,server3中以slave身份运行

     

    [admin@server2 ~]$ /usr/local/bin/repcached -p 11211 -v

    [admin@server2 ~]$ replication: listen

     

    [admin@server3 ~]$ /usr/local/bin/repcached -p 11211 -x server2 -v

    replication: connect (peer=192.168.1.202:11212)

    replication: marugoto copying

    replication: start

     

    开启两个终端,分别连接server2server311211端口

    [admin@server1 ~]$ telnet server2 11211

    Trying 192.168.1.202...

    Connected to server2.

    Escape character is '^]'.

     

    [admin@server1 ~]$ telnet server3 11211

    Trying 192.168.1.203...

    Connected to server3.

    Escape character is '^]'.

     

    server2中设置一个变量aa

    set aa 0 0 5

    bbbbb

    STORED

    get aa

    VALUE aa 0 5

    bbbbb

    END

     

    server3中查询变量aa

    get aa

    VALUE aa 0 5

    bbbbb

    END

     

    server3中修改aa的值

    append aa 0 0 3

    ccc

    STORED

    get aa

    VALUE aa 0 8

    bbbbbccc

    END

     

    server2中查看aa

    get aa

    VALUE aa 0 8

    bbbbbccc

    END

     

    server3中删除aa

    delete aa

    DELETED

    get aa

    END

     

    server2中查看aa

    delete aa

    NOT_FOUND

    get aa

    END

     

     

     

    2. Java操作memcached

     

    使用JDBC连接PostGreSQL数据库,查询一段数据并保存在memcached。分别再从memcachedPostGreSQL中查询该段数据,比较二者时间差异。

     

    import com.whalin.MemCached.MemCachedClient;

    import com.whalin.MemCached.SockIOPool;

    import java.sql.Connection;

    import java.sql.DriverManager;

    import java.sql.ResultSet;

    import java.sql.SQLException;

    import java.sql.Statement;

    import java.util.ArrayList;

    import java.util.List;

     

     

    public class MemChachedTest {

     

        public static void main(String[] args) throws ClassNotFoundException, SQLException {

            Class.forName("org.postgresql.Driver");

            String postGresURL = "jdbc:postgresql://10.1.20.202:5432/testdb";

            Connection con = null;

            Statement st = null;

     

            String[] memCachedServer = {"10.1.20.202:11211"};

            SockIOPool pool = null;

     

            List<String> cacheValues = new ArrayList<String>();

            try {

     

                //连接数据库

                con = DriverManager.getConnection(postGresURL, "username", "password");

                st = con.createStatement();

     

                //从数据中查询,并取出结果

                String sql = "select group.display_name from group, group_item, device "

                        + "where group_item.group_id= group.id and group_item.item_id= device.id; ";

                ResultSet rs = st.executeQuery(sql);

                while (rs.next()) {

                     cacheValues.add(rs.getString(1));

                }

                rs.close();

     

                //连接MemCached,并保存结果

                pool = SockIOPool.getInstance();

                pool.setServers(memCachedServer);

                pool.initialize();

                MemCachedClient memCachedClient = new MemCachedClient();

                memCachedClient.set("cacheValues", cacheValues);

     

     

                //再次查询数据库,并计算所耗时间

                long beforeQuery = System.currentTimeMillis();

                rs = st.executeQuery(sql);

                long afterQuery = System.currentTimeMillis();

                System.out.println(" Cost Time of Query from PostGreSQL (ms):" + (afterQuery - beforeQuery));

     

                //查询MemCached,并计算所耗时间

                long beforeGet = System.currentTimeMillis();

                List<String> resultCached = (List<String>) memCachedClient.get("cacheValues");

                long afterGet = System.currentTimeMillis();

                System.out.println(" Cost Time of Get from MemCached (ms):" + (afterGet - beforeGet));

     

                //打印从数据库中查询的结果

                System.out.println(" -----data from PostGreSQL------");

                while (rs.next()) {

                     System.out.println(rs.getString(1));

                }

                rs.close();

     

                //打印从MemCached查询的结果

                System.out.println(" -----data from MemCached------");

                for (String s :resultCached) {

                     System.out.println(s);

                 }

            } finally {

                if (st != null) {

                    try {

                        st.close();

                    } catch (SQLException ex) {

                    }

                }

                if (con != null) {

                    try {

                        con.close();

                    } catch (SQLException ex) {

                    }

                }

                if(pool!=null)

                {

                     pool.shutDown();

                }

            }

     

        }

    }

     

    运行所得结果:

    Cost Time of Query from PostGreSQL (ms):25

    Cost Time of Get from MemCached (ms):8

     

    -----data from PostGreSQL------

    Net-192.168.0.0/24

    Windows

    Net-211.144.207.8/29

    Net-10.1.70.0/24

    Net-10.1.40.0/24

    Net-10.1.30.0/24

    Net-10.1.20.0/22

    。。。。。。。。。。。。。。。。。。。。。。。。。。。

     

    -----data from MemCached------

    Net-192.168.0.0/24

    Windows

    Net-211.144.207.8/29

    Net-10.1.70.0/24

    Net-10.1.40.0/24

    Net-10.1.30.0/24

    Net-10.1.20.0/22

    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

     

    多运行几次,比较二者消耗时间的差异:

     

     Cost Time of Query from PostGreSQL (ms):17

     Cost Time of Get from MemCached (ms):8

     

    Cost Time of Query from PostGreSQL (ms):18

    Cost Time of Get from MemCached (ms):8

     

    Cost Time of Query from PostGreSQL (ms):16

    Cost Time of Get from MemCached (ms):7

     

    Cost Time of Query from PostGreSQL (ms):20

    Cost Time of Get from MemCached (ms):7

     

     

    可以从PostGreSQL中查询数据所消耗的时间大约是从MemCached中查询的所消耗的两倍。因为数据库表记录比较少,所以性能提升不明显。

  • 相关阅读:
    vim 常用操作
    Zookeeper 一种简单的原子操作机制:
    用习惯的vimrc配置,在这里记录一下,以后可以继续完善使用
    static_cast, dynamic_cast, const_cast探讨【转】
    常用CSS标签使用
    Java基础
    Hibernate的第一个程序
    Hibernate的优缺点
    python基础语法
    ansible-role安装nginx,keepalived,tomcat
  • 原文地址:https://www.cnblogs.com/leeeee/p/7276644.html
Copyright © 2020-2023  润新知