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 ...
随机推荐
- Linux下Eclipse连接小米手机真机调试
以前用Ubuntu 12.04可以真机调试,连上手机就可以了,上次看pear os 好看于是下了个玩玩(界面风格像mac 买不起,仿得起),这次想开发安卓发现真机调试不了了...于是乎各种找资料,各种 ...
- Java EE 目标
在大三上学期学习了Java se,只是简单的学习了语法,而且没有及时的复习巩固,语法知识已经忘了许多.在这个新学期,又有了Java EE这门课,书上的内容是从没学习过的新知识,只是在网站上看到过像Sp ...
- CentOS6.8 RPM包安装快速zabbix22
CentOS6.8 RPM包安装快速zabbix22 yum install -y epel-release # yum install -y httpd php php-devel mysql-se ...
- webgl 的空间变换(下):空间变换
在网上看了很多关于在三维世界中怎么把一个顶点经过一步步变化,最终呈现在我们的屏幕上的. 其实很多博客或者书籍已经讲的很清楚了,那为什么我还要特别再写一次博客来阐述自己观点呢?(这里只针对那些学习web ...
- zabbix监控tcp连接并发数
第一步,想在zabbix的web监控tcp连接数,那么要看zabbix-server的版本和zabbix-agent版本是否一致,不然TCP-status图没有数据 也会报错.下图就是版本不符合报错的 ...
- CAD使用DeleteXData删除数据(com接口)
主要用到函数说明: MxDrawEntity::DeleteXData 删除扩展数据,详细说明如下: 参数 说明 pzsAppName 删除的扩展数据名称,如果为空,删除所有扩展数据 c#代码实现如下 ...
- windows开发错误
2018/07/16: 1.问题: 代码: list <int> listN; error C2065:'list' : undeclared identifier 我已经#include ...
- ansible相关说明
2.ansible相关说明 2.1.ansible相关命令 ansible:定义并运行简单任务,主要执行ad-hoc命令 ansible-config:查看.编辑.管理ansible配置 ansibl ...
- asp.net中js和jquery调用ashx的不同方法分享,需要的朋友可以参考一下
asp.net中js和jquery调用ashx的不同方法分享,需要的朋友可以参考一下 =============js================ 复制代码代码如下: var xhr = n ...
- 排序算法小结:C++实现
#include<vector> #include<iostream> //排序算法的稳定性:对于相同的关键字,排序之前的位置和排序之后的位置相同,则称为稳定排序,否则不稳定排 ...