package xmq.study.memcached; import java.io.IOException; import java.net.InetSocketAddress; import net.spy.memcached.MemcachedClient; /** * memcached test * @author 943567518@qq.com * */ public class Memcached { public static void main(String[] args) { //导入spymemcached-3.17.jar //dos下启动memcached: //1、进入解压目录 ;2、启动命令memcached.exe -d start(安装:memcached.exe -d install);3、关闭命令memcached.exe -d stop MemcachedClient mcc=null; try { //本地连接 mcc=new MemcachedClient(new InetSocketAddress("127.0.0.1",11211)); //添加 add(mcc, "xmq", 0, "添加"); System.out.println("添加: "+get(mcc,"xmq")); //追加 append(mcc, "xmq","追加"); System.out.println("追加: "+get(mcc,"xmq")); //前置追加 prepend(mcc, "xmq","前置追加"); System.out.println("前置追加: "+get(mcc,"xmq")); //替换 replace(mcc, "xmq",0,"替换"); System.out.println("替换: "+get(mcc,"xmq")); //删除 delete(mcc, "xmq"); System.out.println("删除: "+get(mcc,"xmq")); //自减 add(mcc, "num", 0, "2"); replace(mcc, "num",0,"2"); decr(mcc,"num",1); System.out.println("自减: "+get(mcc,"num")); //自增 replace(mcc, "num",0,"2"); incr(mcc,"num",1); System.out.println("自增: "+get(mcc,"num")); //存储java对象 String[] strArr=new String[]{"我","是","字","符","数","组"}; add(mcc,"strArr",0,strArr); System.out.println("字符数组: "+get(mcc,"strArr")); } catch (IOException e) { e.printStackTrace(); }finally{ //关闭连接 mcc.shutdown(); } } /** * Memcached incr 与 decr 命令用于对已存在的 key(键) 的数字值进行自增或自减操作。 * incr 与 decr 命令操作的数据必须是十进制的32位无符号整数。 * 如果 key 不存在返回 NOT_FOUND,如果键的值不为数字,则返回 CLIENT_ERROR,其他错误返回 ERROR。 * @param mcc * @param key * @return */ public static void decr(MemcachedClient mcc,String key,int value){ mcc.decr(key,value); } /** * Memcached incr 与 decr 命令用于对已存在的 key(键) 的数字值进行自增或自减操作。 * incr 与 decr 命令操作的数据必须是十进制的32位无符号整数。 * 如果 key 不存在返回 NOT_FOUND,如果键的值不为数字,则返回 CLIENT_ERROR,其他错误返回 ERROR。 * @param mcc * @param key * @return */ public static void incr(MemcachedClient mcc,String key,int value){ mcc.incr(key,value); } /** * 获取 CAS 令牌存 的 value(数据值) ,如果 key 不存在,则返回空 * @param mcc * @param key * @return */ public static void delete(MemcachedClient mcc,String key){ mcc.delete(key); } /** * 获取 CAS 令牌存 的 value(数据值) ,如果 key 不存在,则返回空 * @param mcc * @param key * @return */ public static Object gets(MemcachedClient mcc,String key){ return mcc.gets(key); } /** * 获取存储在 key(键) 中的 value(数据值) ,如果 key 不存在,则返回空 * @param mcc * @param key * @return */ public static Object get(MemcachedClient mcc,String key){ return mcc.get(key); } /** * cas key flags exptime bytes unique_cas_token [noreply] * value * 参数说明如下: * key:键值 key-value 结构中的 key,用于查找缓存值。 * flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 。 * exptime:在缓存中保存键值对的时间长度(以秒为单位,0 表示永远) * bytes:在缓存中存储的字节数 * unique_cas_token通过 gets 命令获取的一个唯一的64位值。 * noreply(可选): 该参数告知服务器不需要返回数据 * value:存储的值(始终位于第二行)(可直接理解为key-value结构中的value) * * @param mcc * @param key * @param value */ public static void cas(MemcachedClient mcc,String key,Object value){ mcc.cas(key, mcc.gets(key).getCas(), value); } /** * prepend 命令的基本语法格式如下: * prepend key flags exptime bytes [noreply] * value * 参数说明如下: * key:键值 key-value 结构中的 key,用于查找缓存值。 * flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 。 * exptime:在缓存中保存键值对的时间长度(以秒为单位,0 表示永远) * bytes:在缓存中存储的字节数 * noreply(可选): 该参数告知服务器不需要返回数据 * value:存储的值(始终位于第二行)(可直接理解为key-value结构中的value) * @param mcc * @param key * @param value */ public static void prepend(MemcachedClient mcc,String key,Object value){ mcc.prepend(key, value); } /** * append 命令的基本语法格式如下: * append key flags exptime bytes [noreply] * value * 参数说明如下: * key:键值 key-value 结构中的 key,用于查找缓存值。 * flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 。 * exptime:在缓存中保存键值对的时间长度(以秒为单位,0 表示永远) * bytes:在缓存中存储的字节数 * noreply(可选): 该参数告知服务器不需要返回数据 * value:存储的值(始终位于第二行)(可直接理解为key-value结构中的value) * @param mcc * @param key * @param value */ public static void append(MemcachedClient mcc,String key,Object value){ mcc.append(key, value); } /** * replace 命令的基本语法格式如下: * replace key flags exptime bytes [noreply] * value * 参数说明如下: * key:键值 key-value 结构中的 key,用于查找缓存值。 * flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 。 * exptime:在缓存中保存键值对的时间长度(以秒为单位,0 表示永远) * bytes:在缓存中存储的字节数 * noreply(可选): 该参数告知服务器不需要返回数据 * value:存储的值(始终位于第二行)(可直接理解为key-value结构中的value) * @param mcc * @param key * @param exptime * @param value */ public static void replace(MemcachedClient mcc,String key,int exptime,Object value){ mcc.replace(key, exptime, value); } /** * add 命令的基本语法格式如下: * add key flags exptime bytes [noreply] * value * 参数说明如下: * key:键值 key-value 结构中的 key,用于查找缓存值。 * flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 。 * exptime:在缓存中保存键值对的时间长度(以秒为单位,0 表示永远) * bytes:在缓存中存储的字节数 * noreply(可选): 该参数告知服务器不需要返回数据 * value:存储的值(始终位于第二行)(可直接理解为key-value结构中的value) * @param mcc * @param key * @param exptime * @param value */ public static void add(MemcachedClient mcc,String key,int exptime,Object value){ mcc.add(key, exptime, value); } /** * set 命令的基本语法格式如下: * set key flags exptime bytes [noreply] * value * 参数说明如下: * key:键值 key-value 结构中的 key,用于查找缓存值。 * flags:可以包括键值对的整型参数,客户机使用它存储关于键值对的额外信息 。 * exptime:在缓存中保存键值对的时间长度(以秒为单位,0 表示永远) * bytes:在缓存中存储的字节数 * noreply(可选): 该参数告知服务器不需要返回数据 * value:存储的值(始终位于第二行)(可直接理解为key-value结构中的value) * @param mcc * @param key * @param exptime * @param value */ public static void set(MemcachedClient mcc,String key,int exptime,Object value){ mcc.set(key, exptime, value); } }
package xmq.study.redis; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import redis.clients.jedis.Jedis; /** * redis test * @author 943567518@qq.com * */ public class Redis { public static void main(String[] args) { //导入jedis-2.9-0.jar //dos下启动redis: //1、进入解压目录 ;2、启动命令redis-server.exe redis.windows.conf Jedis jedis=new Jedis("127.0.0.1",6379); //set&get&del jedis.set("xmq-set-get-del","set数据1"); System.out.println("获取xmq-set-get-del:"+jedis.get("xmq-set-get-del")); jedis.del("xmq-set-get-del"); System.out.println("获取xmq-set-get-del:"+jedis.get("xmq-set-get-del")); //添加string jedis.set("xmq", "添加"); System.out.println(jedis.get("xmq")); //存储数据到列表中 jedis.lpush("xmq-list", "列表数据1"); jedis.lpush("xmq-list", "列表数据2"); jedis.lpush("xmq-list", "列表数据3"); List<String> list = jedis.lrange("xmq-list", 0 ,2); for(int i=0; i<list.size(); i++) { System.out.println("列表项为: "+list.get(i)); } //map测试 Map<String,String> map=new HashMap<String,String>(); map.put("xmq-map-key1", "map数据1"); map.put("xmq-map-key2", "map数据2"); map.put("xmq-map-key3", "map数据3"); jedis.hmset("xmq-map",map); Set<String> xmqMapKeys =jedis.hkeys("xmq-map"); System.out.println("获取xmq-map:"+jedis.hgetAll("xmq-map")); Iterator<String> xmqMapIt=xmqMapKeys.iterator() ; while(xmqMapIt.hasNext()){ String key = xmqMapIt.next(); System.out.println("获取xmq-map-key项:"+key); } // 获取key数据并输出 Set<String> keys = jedis.keys("*"); Iterator<String> it=keys.iterator() ; while(it.hasNext()){ String key = it.next(); System.out.println("获取key项:"+key); jedis.del(key); System.out.println("删除key项:"+key); } //保存数据,将在 redis 安装目录中创建dump.rdb文件。 //jedis.save(); } }