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 ...
随机推荐
- Array和ArrayList之间的区别
. Array类型的变量在声明的同时必须进行实例化(至少得初始化数组的大小),而ArrayList可以只是先声明. . Array只能存储同构的对象,而ArrayList可以存储异构的对象. 同构的对 ...
- git 学习笔记1
目前我属于粗放型的[学习者],接下来需要做一些改变,让自己更加规范.首先需要学习的就是版本控制系统,本科在工作室的时候使用过一点Subversion,不过到现在已经基本没有印象了.git现在越来越成为 ...
- vue2.0版本指令v-if与v-show的区别
v-if: 判断是否加载,可以减轻服务器的压力,在需要时加载. v-show:调整css dispaly属性,可以使客户端操作更加流畅. v-if示例: <!DOCTYPE html> & ...
- mvc框架 与vuex的介绍
应用级的状态集中放在store中: 改变状态的方式是提交mutations,这是个同步的事物: 异步逻辑应该封装在action中. const vuex_store = new Vuex.store( ...
- KMS
slmgr -ipk 73KQT-CD9G6-K7TQG-66MRP-CQ22C
- bat copy
@echo off regedit /s %~dp0regedit.reg //注册注册表xcopy "D: ...
- oracle数据库使用hint来让模糊查询走索引
在没有创建数据直方图之前,查询优化器是cbo,可能不会选择代价最低(效率最高)的方式查询. 先创建表 --日语假名表 CREATE TABLE JAPANESE_SOUNDMARK ( ID INTE ...
- [实现] 利用 Seq2Seq 预测句子后续字词 (Pytorch)
最近有个任务:利用 RNN 进行句子补全,即给定一个不完整的句子,预测其后续的字词.本文使用了 Seq2Seq 模型,输入为5个中文字词,输出为一个中文字词. 目录 关于RNN 语料预处理 搭建数据集 ...
- IOS 3D UI --- CALayer的transform扩展
http://www.cocoachina.com/bbs/read.php?tid=117061 例子代码可以在 http://download.csdn.net/detail/worldmatri ...
- 笔试算法题(02):N阶阶乘 & 双向循环链表实现
出题:N阶阶乘问题的递归算法和非递归算法: 分析: 第一种解法:普通暴力解法的实现较为容易: 第二种解法:stirling公式可快速给出近似解: 解题: int Recursive(int s) { ...