Redis操作一(curd)
来源:互联网 发布:大数据技术与应用 编辑:程序博客网 时间:2024/06/06 04:04
package com.wjh.Redis;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import org.junit.Before;
import org.junit.Test;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPoolConfig;
/**
* Redis操作
*
* 参考:
* http://blog.csdn.net/liubenlong007/article/details/53766734
* http://doc.redisfans.com/index.html
*
* Copyright: Copyright 2007 - 2017 MPR Tech. Co. Ltd. All Rights Reserved.
* Date: 2017年7月27日 下午6:15:10
* Author: wujianh
* Version: 1.0.0.0
* Description: Initialize
*/
public class Redis {
static String prefix = "user:lbl";
private JedisCluster cluster;
@Before
public void testInitJedisPool() {
JedisPoolConfig poolConfig = new JedisPoolConfig();
// 最大连接数
poolConfig.setMaxTotal(10);
// 最大空闲数
poolConfig.setMaxIdle(1);
// 最大允许等待时间,如果超过这个时间还未获取到连接,则会报JedisException异常:
// Could not get a resource from the pool
poolConfig.setMaxWaitMillis(1000);
Set<HostAndPort> nodes = new LinkedHashSet<HostAndPort>();
nodes.add(new HostAndPort("192.168.61.136", 7000));
nodes.add(new HostAndPort("192.168.61.136", 7001));
nodes.add(new HostAndPort("192.168.61.136", 7002));
nodes.add(new HostAndPort("192.168.61.142", 7000));
nodes.add(new HostAndPort("192.168.61.142", 7001));
nodes.add(new HostAndPort("192.168.61.142", 7002));
cluster = new JedisCluster(nodes, poolConfig);
}
/**
* 插入KEY
* @Description: TODO
*
* Author: wujianh
* Date: 2017年7月28日 下午7:08:42
* Version: 1.0
*/
@Test
public void addJedis() {
if (null != cluster) {
System.out.println("set:" + cluster.set("test1", "test1"));
System.out.println("set:" + cluster.set("test2", "test2"));
System.out.println("set:" + cluster.set("test3", "test3"));
}
}
/**
* 取KEY
* @Description: TODO
*
* Author: wujianh
* Date: 2017年7月28日 下午7:08:55
* Version: 1.0
*/
@Test
public void getJedis() {
if (null != cluster) {
System.out.println("get:" + cluster.get("test1"));
System.out.println("get:" + cluster.get("test2"));
System.out.println("get:" + cluster.get("test3"));
}
}
/**
* 修改
* @Description: TODO
*
* Author: wujianh
* Date: 2017年7月28日 下午7:19:24
* Version: 1.0
*/
@Test
public void updateJedis() {
if (null != cluster) {
// 拼接
System.out.println(
"update test2:" + cluster.append("test2", " is test"));
/**
* incr:
* 将 key 中储存的数字值增一。
* 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。
* 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
* 本操作的值限制在 64 位(bit)有符号数字表示之内。
* 这是一个针对字符串的操作,因为 Redis 没有专用的整数类型,所以 key 内储存的字符串被解释为十进制 64 位有符号整数来执行 INCR 操作。
* 返回值: 执行 INCR 命令之后 key 的值。
* 最终数据结果如果大于10000,好像会有问题(没有测试)
*/
// 进行加1操作
System.out.println("update age:" + cluster.incr("age"));
}
}
/**
* 删除
* @Description: TODO
*
* Author: wujianh
* Date: 2017年7月28日 下午7:14:27
* Version: 1.0
*/
@Test
public void delJedis() {
if (null != cluster) {
System.out.println("del:" + cluster.del("test1"));
}
}
/**
* 批量操作
* @Description: TODO
*
* Author: wujianh
* Date: 2017年7月29日 上午11:48:20
* Version: 1.0
*/
@Test
public void batch() {
if (null != cluster) {
/**
* 批量操作key
* keySlot算法中,如果key包含{},就会使用第一个{}内部的字符串作为hash key,
* 这样就可以保证拥有同样{}内部字符串的key就会拥有相同slot。
* 参考:http://brandnewuser.iteye.com/blog/2314280
*
* 注意:这样的话,本来可以hash到不同的slot中的数据都放到了同一个slot中,
* 所以使用的时候要注意数据不要太多导致一个slot数据量过大,数据分布不均匀!
*
* MSET 是一个原子性(atomic)操作,所有给定 key 都会在同一时间内被设置,
* 某些给定 key 被更新而另一些给定 key 没有改变的情况,不可能发生。
*
* 如果某个给定 key 已经存在,那么 MSET 会用新值覆盖原来的旧值,
* 如果这不是你所希望的效果,请考虑使用 MSETNX 命令:它只会在所有给定 key 都不存在的情况下进行设置操作。
*/
String result = cluster.mset("{user:lbl:}name", "wjh",
"{user:lbl:}age", "18", "{user:lbl:}qq", "88886666");
System.out.println("batch mset:" + result);
String name = cluster.get("{user:lbl:}name");
System.out.println("batch get:" + name);
List<String> values = cluster.mget("{user:lbl:}name",
"{user:lbl:}age", "{user:lbl:}qq");
System.out.println(values);
}
}
}
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import org.junit.Before;
import org.junit.Test;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPoolConfig;
/**
* Redis操作
*
* 参考:
* http://blog.csdn.net/liubenlong007/article/details/53766734
* http://doc.redisfans.com/index.html
*
* Copyright: Copyright 2007 - 2017 MPR Tech. Co. Ltd. All Rights Reserved.
* Date: 2017年7月27日 下午6:15:10
* Author: wujianh
* Version: 1.0.0.0
* Description: Initialize
*/
public class Redis {
static String prefix = "user:lbl";
private JedisCluster cluster;
@Before
public void testInitJedisPool() {
JedisPoolConfig poolConfig = new JedisPoolConfig();
// 最大连接数
poolConfig.setMaxTotal(10);
// 最大空闲数
poolConfig.setMaxIdle(1);
// 最大允许等待时间,如果超过这个时间还未获取到连接,则会报JedisException异常:
// Could not get a resource from the pool
poolConfig.setMaxWaitMillis(1000);
Set<HostAndPort> nodes = new LinkedHashSet<HostAndPort>();
nodes.add(new HostAndPort("192.168.61.136", 7000));
nodes.add(new HostAndPort("192.168.61.136", 7001));
nodes.add(new HostAndPort("192.168.61.136", 7002));
nodes.add(new HostAndPort("192.168.61.142", 7000));
nodes.add(new HostAndPort("192.168.61.142", 7001));
nodes.add(new HostAndPort("192.168.61.142", 7002));
cluster = new JedisCluster(nodes, poolConfig);
}
/**
* 插入KEY
* @Description: TODO
*
* Author: wujianh
* Date: 2017年7月28日 下午7:08:42
* Version: 1.0
*/
@Test
public void addJedis() {
if (null != cluster) {
System.out.println("set:" + cluster.set("test1", "test1"));
System.out.println("set:" + cluster.set("test2", "test2"));
System.out.println("set:" + cluster.set("test3", "test3"));
}
}
/**
* 取KEY
* @Description: TODO
*
* Author: wujianh
* Date: 2017年7月28日 下午7:08:55
* Version: 1.0
*/
@Test
public void getJedis() {
if (null != cluster) {
System.out.println("get:" + cluster.get("test1"));
System.out.println("get:" + cluster.get("test2"));
System.out.println("get:" + cluster.get("test3"));
}
}
/**
* 修改
* @Description: TODO
*
* Author: wujianh
* Date: 2017年7月28日 下午7:19:24
* Version: 1.0
*/
@Test
public void updateJedis() {
if (null != cluster) {
// 拼接
System.out.println(
"update test2:" + cluster.append("test2", " is test"));
/**
* incr:
* 将 key 中储存的数字值增一。
* 如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。
* 如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
* 本操作的值限制在 64 位(bit)有符号数字表示之内。
* 这是一个针对字符串的操作,因为 Redis 没有专用的整数类型,所以 key 内储存的字符串被解释为十进制 64 位有符号整数来执行 INCR 操作。
* 返回值: 执行 INCR 命令之后 key 的值。
* 最终数据结果如果大于10000,好像会有问题(没有测试)
*/
// 进行加1操作
System.out.println("update age:" + cluster.incr("age"));
}
}
/**
* 删除
* @Description: TODO
*
* Author: wujianh
* Date: 2017年7月28日 下午7:14:27
* Version: 1.0
*/
@Test
public void delJedis() {
if (null != cluster) {
System.out.println("del:" + cluster.del("test1"));
}
}
/**
* 批量操作
* @Description: TODO
*
* Author: wujianh
* Date: 2017年7月29日 上午11:48:20
* Version: 1.0
*/
@Test
public void batch() {
if (null != cluster) {
/**
* 批量操作key
* keySlot算法中,如果key包含{},就会使用第一个{}内部的字符串作为hash key,
* 这样就可以保证拥有同样{}内部字符串的key就会拥有相同slot。
* 参考:http://brandnewuser.iteye.com/blog/2314280
*
* 注意:这样的话,本来可以hash到不同的slot中的数据都放到了同一个slot中,
* 所以使用的时候要注意数据不要太多导致一个slot数据量过大,数据分布不均匀!
*
* MSET 是一个原子性(atomic)操作,所有给定 key 都会在同一时间内被设置,
* 某些给定 key 被更新而另一些给定 key 没有改变的情况,不可能发生。
*
* 如果某个给定 key 已经存在,那么 MSET 会用新值覆盖原来的旧值,
* 如果这不是你所希望的效果,请考虑使用 MSETNX 命令:它只会在所有给定 key 都不存在的情况下进行设置操作。
*/
String result = cluster.mset("{user:lbl:}name", "wjh",
"{user:lbl:}age", "18", "{user:lbl:}qq", "88886666");
System.out.println("batch mset:" + result);
String name = cluster.get("{user:lbl:}name");
System.out.println("batch get:" + name);
List<String> values = cluster.mget("{user:lbl:}name",
"{user:lbl:}age", "{user:lbl:}qq");
System.out.println(values);
}
}
}
阅读全文
0 0
- Redis操作一(curd)
- thinkPHP常用数据操作(一)CURD
- JDBC完成CURD操作记录(一)
- 使用ThinkPHP扩展,实现Redis的CURD操作。
- 使用ThinkPHP扩展,实现Redis的CURD操作。
- 使用ThinkPHP扩展,实现Redis的CURD操作。
- Redis 基本操作一
- Redis操作指令一
- ThinkPHP 之 curd 操作
- thinkphp数据库操作CURD
- curd实体操作
- mongoDB的CURD操作
- Yii createCommand CURD操作
- wordpress数据库CURD操作
- thinkphp CURD操作
- ThinkPHP 数据库CURD操作
- Yii createCommand CURD操作
- CURD操作详解
- 如何让VC++6.0程序具有XP风格
- 求字典序在s1和s2之间的,长度在len1到len2的字符串的个数,结果mod 1000007。
- Nodejs起步
- 【学习笔记】熟悉使用Visual Studio Code的快捷键
- SpringMVC 源代码深度解析BeanWrapper及其实现
- Redis操作一(curd)
- 交换两个变量的值,不使用第三个变量
- UVA10954
- 欢迎使用CSDN-markdown编辑器
- R在市场调查中的应用--探索性因子分析(EFA)
- 第五章 Maven结合Junit实现单元测试
- SpringMVC源码深度分析DispatcherServlet核心的控制器(初始化)
- MySQL表分区
- Java 基础之-枚举