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("添加:\t"+get(mcc,"xmq"));
//追加
append(mcc, "xmq","追加");
System.out.println("追加:\t"+get(mcc,"xmq"));
//前置追加
prepend(mcc, "xmq","前置追加");
System.out.println("前置追加:\t"+get(mcc,"xmq"));
//替换
replace(mcc, "xmq",0,"替换");
System.out.println("替换:\t"+get(mcc,"xmq"));
//删除
delete(mcc, "xmq");
System.out.println("删除:\t"+get(mcc,"xmq"));
//自减
add(mcc, "num", 0, "2");
replace(mcc, "num",0,"2");
decr(mcc,"num",1);
System.out.println("自减:\t"+get(mcc,"num"));
//自增
replace(mcc, "num",0,"2");
incr(mcc,"num",1);
System.out.println("自增:\t"+get(mcc,"num"));
//存储java对象
String[] strArr=new String[]{"我","是","字","符","数","组"};
add(mcc,"strArr",0,strArr);
System.out.println("字符数组:\t"+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();
}
}

Java使用Memcached和Redis简单示例的更多相关文章

  1. JAVA使用jdbc连接MYSQL简单示例

    以下展示的为JAVA使用jdbc连接MYSQL简单示例: import java.sql.DriverManager; import java.sql.ResultSet; import java.s ...

  2. java读取ACCESS数据库的简单示例

    java读取ACCESS数据库的简单示例 虽然简单,对初学者来说,如果没有一段可以成功执行的代码供参考,还真难调试 先用ACCESS建一个数据库 DB1.MDB,里面有一表"table1&q ...

  3. Java操作redis简单示例

    第一:安装Redis    首先我们要安装Redis,就像我们操作数据库一样,在操作之前肯定要先创建好数据库的环境.    Redis的下载可以百度一下,或者打开下面的下载链接:    https:/ ...

  4. Java UDP网络编程 - 最简单示例

    UDP也是网络通讯中的一个重要协议,与TCP区别可参见浅谈TCP/IP 和 UDP的区别,本文就对Java UDP通讯做一个简单例子介绍 服务端: package wyf; import java.i ...

  5. java几种常用设计模式简单示例

    1.单例设计模式 所谓单例设计模式简单说就是无论程序如何运行,采用单例设计模式的类(Singleton类)永远只会有一个实例化对象产生.具体实现步骤如下: (1) 将采用单例设计模式的类的构造方法私有 ...

  6. java集成memcached、redis防止缓存穿透

    下载相关jar,安装Memcached,安装教程:http://www.runoob.com/memcached/memcached-install.html spring配置memcached &l ...

  7. redis -- python操作连接redis简单示例

    1.先安装 redis,pyredis sudo pip install redis sudo pip install python-redis 2.示例: importredis >>& ...

  8. Redis简单示例

    1.Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. 从2010年3月15日起,Redis的开发工作由VMwa ...

  9. springboot整合redis简单示例

    一.项目架构 二.项目内容 1.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&q ...

随机推荐

  1. 阿里云设置指定ip访问实例

    添加安全组规则 添加允许访问的外网IP,优先级设置为1,并将所有ip设置为拒绝访问,优先级设置为2. 参考地址: https://help.aliyun.com/document_detail/254 ...

  2. 【PostgreSQL-9.6.3】Red Hat 4.4.7下的安装

    1. 下载源码包https://www.postgresql.org/ftp/source/v9.6.1/ 2. 上传到/opt目录下 3. 创建postgres用户及dba组,并修改压缩包的属主属组 ...

  3. IE和DOM事件流、普通事件和绑定事件的区别

    IE和DOM事件流的区别 IE采用冒泡型事件 Netscape(网络信息浏览器)使用捕获型事件 DOM使用先捕获后冒泡型事件 示例: <body> <div> <butt ...

  4. 设计模式之一:strategy pattern

    定义算法族,彼此之间可以替换.变化的方法抽出封装,不变的父类定义继承.多用组合少用继承. 代码示例先不贴了.

  5. Win7 32位 遇到微软 silverlight 5.0安装失败的解决办法

    刚开始,也是尝试下载安装,多次都是到99%,提示安装失败! 也查找了很多网上朋友分享的办法,还是不行.重新建立一个管理员账号,还是不行. 后来反复不断的测试,找到原因了,安装99%不成功,但是卸载程序 ...

  6. .Net中的强名称(Strong Name)

    我在CSDN上的文章, 转载与此: .Net中的强名称(Strong Name) http://blog.csdn.net/Anor/article/details/3649646

  7. 理解 call, apply 的用法

    callcall() 方法使用一个指定的 this 值和单独给出的一个或多个参数来调用一个函数. function list() { return Array.prototype.slice.call ...

  8. 用闭包方式实现点击a标签弹也索引值

    var self = document.getElementsByTagName("a"); for(var i=0;i<self.length;i++){ self[i]. ...

  9. new Buffer 生成二进制数据

    node编辑环境下: > new Buffer("admin")<Buffer 61 64 6d 69 6e> 通过post请求,服务端接收到是流数据,必须把流数 ...

  10. java_lock锁

    lock锁是一个接口,jdk5.0新增的接口: 在线程中创建一个他的实现类对象Reentrantlock,默认为fals可以改为true,改为true后是有序的 把操作共享资源的代码放入try中,在t ...