Java使用Memcached和Redis简单示例
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简单示例的更多相关文章
- JAVA使用jdbc连接MYSQL简单示例
以下展示的为JAVA使用jdbc连接MYSQL简单示例: import java.sql.DriverManager; import java.sql.ResultSet; import java.s ...
- java读取ACCESS数据库的简单示例
java读取ACCESS数据库的简单示例 虽然简单,对初学者来说,如果没有一段可以成功执行的代码供参考,还真难调试 先用ACCESS建一个数据库 DB1.MDB,里面有一表"table1&q ...
- Java操作redis简单示例
第一:安装Redis 首先我们要安装Redis,就像我们操作数据库一样,在操作之前肯定要先创建好数据库的环境. Redis的下载可以百度一下,或者打开下面的下载链接: https:/ ...
- Java UDP网络编程 - 最简单示例
UDP也是网络通讯中的一个重要协议,与TCP区别可参见浅谈TCP/IP 和 UDP的区别,本文就对Java UDP通讯做一个简单例子介绍 服务端: package wyf; import java.i ...
- java几种常用设计模式简单示例
1.单例设计模式 所谓单例设计模式简单说就是无论程序如何运行,采用单例设计模式的类(Singleton类)永远只会有一个实例化对象产生.具体实现步骤如下: (1) 将采用单例设计模式的类的构造方法私有 ...
- java集成memcached、redis防止缓存穿透
下载相关jar,安装Memcached,安装教程:http://www.runoob.com/memcached/memcached-install.html spring配置memcached &l ...
- redis -- python操作连接redis简单示例
1.先安装 redis,pyredis sudo pip install redis sudo pip install python-redis 2.示例: importredis >>& ...
- Redis简单示例
1.Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. 从2010年3月15日起,Redis的开发工作由VMwa ...
- springboot整合redis简单示例
一.项目架构 二.项目内容 1.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&q ...
随机推荐
- 在SQLServer 2005附加SQLServer 2008数据库异常处理
远程服务器软件系统不算新,数据库是SQL Server 2005.本地开发基本是用新的软件系统.数据库采用SQL Server 2008. 这样在用远程服务器SQL 2005选择附加SQL 2008的 ...
- git 学习笔记1
目前我属于粗放型的[学习者],接下来需要做一些改变,让自己更加规范.首先需要学习的就是版本控制系统,本科在工作室的时候使用过一点Subversion,不过到现在已经基本没有印象了.git现在越来越成为 ...
- Node.js——post方式提交的图片如何保存
https://www.cnblogs.com/bruce-gou/p/6399766.html 没有使用express框架,主要是对于 request 的监听,data的时候对数据进行保存,end的 ...
- 浮动qq客服备份代码
<div class="main-im"> <div id="open_im" class="open-im"> & ...
- mysql字符集乱码问题
程序错误截图如下: 分析:我们mysql数据库没有设置默认编码, 导致创建的库字符集为 latin1,然而我们创建表的时候,指定字符集为其他的,比如utf8 我的解决思路:把数据库的编码修改为utf8 ...
- 最后一个非零数字(POJ 1604、POJ 1150、POJ 3406)
POJ中有些问题给出了一个长数字序列(即序列中的数字非常多),这个长数字序列的生成有一定的规律,要求求出这个长数字序列中某个位上的数字是多少.这种问题通过分析,找出规律就容易解决. 例如,N!是一个非 ...
- S-HR之导入模板指向实现类配置
SELECT * FROM t_bs_basefileimpmap where FENTITYNAME='com.kingdee.eas.hr.affair.app.ResignBizBillEntr ...
- enote笔记法的思考(ver0.2)
章节:enote笔记法的思考 enote笔记法,它是一种独特的文本标记方式与呈现方式.这一整套系统的记笔记的方法,它能够帮助我们对文本内容(例如,其中的概念.观点.思想等)更加直观和条理地进行理性 ...
- CSU1019: Simple Line Editor
1019: Simple Line Editor Submit Page Summary Time Limit: 1 Sec Memory Limit: 128 Mb Subm ...
- 77-CCI,Commodity Channel Index,商品通道指标.(2015.7.1)
CCI,Commodity Channel Index 商品通道指标 Channel Index,商品通道指标.(2015.7.1)" title="77-CCI,Commodit ...