1、包含几乎所有redis线程池实现以及用法;
2、包含redis Master Slave 主备实现;
3、包含redis 读写分离;
4、包含redis Sentinel 线程池;
6、包含redis Sentinel Salve 线程池;
7、新增线程池对spring支持,和spring完美集成;
8、包含redis Sentinel Sharded Master Slave 线程池;
9、包含redis 对象序列化压缩算法,gz和lzma等;
RedisX 单个Reids线程 用法:
public class TestRedis {
public static void main(String[] args) {
for (int i = 0; i < 5000; i++) {
new RedisThread("threadredis" + i).start();
}
}
}
class RedisThread extends Thread {
private String name;
public RedisThread() {
// TODO Auto-generated constructor stub
}
public RedisThread(String name) {
this.name = name;
}
@Override
public void run() {
try {
for (int i = 0; i < 100; i++) {
System.out.println(PowerfulRedisUtil.setString(this.name + "xxx" + i, "fdsfsdf" + i) + "=" + i + "="
+ this.getName() + this.getId());
sleep(200);
}
for (int i = 0; i < 50; i++) {
System.out.println(PowerfulRedisUtil.del(this.name + "xxx" + i));
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
RedisX SharedMasterSlaveSentinel 用法:
public class TestRedisUtils
{
public static String value="2017年春运来得早,又赶上火车票预售期由60天调整至30天,购票期相对集中。对准备回家过年的人们而言,回家的火车票还好买吗?";
public static void main(String[] args) throws InterruptedException
{
for (int i = 0; i < 500; i++)
{
new ThreadTest("treahd"+i).start();
}
}
class ThreadTest extends Thread
{
private String name;
public ThreadTest()
{
super();
}
public ThreadTest(String name)
{
super();
this.name = name;
}
@Override
public void run()
{
for (int i = 0; i < 10; i++)
{
String string = RedisSharedMasterSlaveSentinelUtil.setObject(name+i,TestRedisUtils.value+name+i);
System.out.println(string + "=" + i);
}
for (int i = 0; i < 10; i++)
{
String value = RedisSharedMasterSlaveSentinelUtil.getObject(name + i, String.class);
if(null != value)
{
System.out.println(value);
}
long l = RedisSharedMasterSlaveSentinelUtil.del(name + i);
System.out.println(l + "=" + i);
}
}
}
RedisX Redis Cluster 线程池用法参考:
public class TestRedisCluster {
public static void main(String[] args) {
for(int i=0;i<100;i++)
{
new RedisClusterThread("RedisClusterThread"+i,100).start();
}
}
}
class RedisClusterThread extends Thread {
private String name;
private int size;
public RedisClusterThread() {
// TODO Auto-generated constructor stub
}
public RedisClusterThread(String name,int size) {
this.name = name;
this.size = size;
}
@Override
public void run() {
// try {
for (int i = 0; i < this.size; i++) {
System.out.println(RedisClusterUtils.setString(this.name + "xxx" + i, "fdsfsdf" + i) + "=" + i + "="
+ this.getName() + this.getId());
//sleep(200);
}
for (int i = 0; i < this.size; i++) {
System.out.println(RedisClusterUtils.del(this.name + "xxx" + i));
}
// } catch (InterruptedException e) {
// TODO Auto-generated catch block
// e.printStackTrace();
// }
}
}
对spring的支持,包com.redissdk.redis.spring下提供spring的支持,用法参考,master slave 读写分离spring配置文件这里贴出来看不到,大家去项目里面去看吧,在test源码包下面的resource下!
spring配置文件配置可以直接配置线程池或指定一个配置文件配置
JAVA Spring 注解测试DEMO:
@RunWith(SpringJUnit4ClassRunner.class) // 整合
@ContextConfiguration(locations="classpath:applicationContext_masterslave.xml") // 加载配置
public class SpringRedisXMasterSlaveTest
{
@Autowired
private RedisXMasterSlave redisXMsterSlave;
@Autowired
private RedisXMasterSlave redisXMsterSlaveOfConfig;
@Test
public void TestRedisX()
{
String key = "key:_redisx_01_masterslave";
//添加对象
String r_ = redisXMsterSlave.setObject(key, "12356465");
System.out.println("存入返回:"+r_);
//获取对象
String s = redisXMsterSlave.getObject(key, String.class);
System.out.println("缓存取数据:"+ s);
//删除对象
long d_ = redisXMsterSlaveOfConfig.del(key);
System.out.println("删除返回:"+ d_);
}
}
新建键值 SET hash_one "hash_one_value" GET hash_one 最大512mb 数据类型 String redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。最大能存储512mb HASH 新建hash HMSET hash_one field_one "field_one_value" field_two "field_two_value
redisx项目地址:http://git.oschina.net/websterlu/redisx pom.xml中我们引入spring,junit4 和 redisx的依赖。 <dependencies> <dependency> <groupId>cn.skynethome</groupId> <artifactId>
本文向大家介绍java简单实现多线程及线程池实例详解,包括了java简单实现多线程及线程池实例详解的使用技巧和注意事项,需要的朋友参考一下 本文为大家分享了java多线程的简单实现及线程池实例,供大家参考,具体内容如下 一、多线程的两种实现方式 1、继承Thread类的多线程 2、实现Runnable接口的多线程 二、线程池的简单实现 三、java爬虫使用线程池实例 以上就是本文的全部内容,希望对
本文向大家介绍c++线程池实现方法,包括了c++线程池实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了c++线程池实现方法。分享给大家供大家参考。具体分析如下: 下面这个线程池是我在工作中用到过的,原理还是建立一个任务队列,让多个线程互斥的在队列中取出任务,然后执行,显然,队列是要加锁的 环境:ubuntu linux 文件名:locker.h 文件名:locker.cpp 文件名
本文向大家介绍java 线程池的实现方法,包括了java 线程池的实现方法的使用技巧和注意事项,需要的朋友参考一下 线程池有以下几种实现方式: Executors目前提供了5种不同的线程池创建配置: 1、newCachedThreadPool() 它是用来处理大量短时间工作任务的线程池,具有几个鲜明特点:它会试图缓存线程并重用,当无缓存线程可用时,就会创建新的工作线程;如果线程闲置时间超过60秒,
本文向大家介绍python实现线程池的方法,包括了python实现线程池的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python实现线程池的方法。分享给大家供大家参考。具体如下: 原理:建立一个任务队列,然多个线程都从这个任务队列中取出任务然后执行,当然任务队列要加锁,详细请看代码 文件名:thrd_pool.py 系统环境:ubuntu linux & python2.6 执行
本文向大家介绍用python实现的线程池实例代码,包括了用python实现的线程池实例代码的使用技巧和注意事项,需要的朋友参考一下 python3标准库里自带线程池ThreadPoolExecutor和进程池ProcessPoolExecutor。 如果你用的是python2,那可以下载一个模块,叫threadpool,这是线程池。对于进程池可以使用python自带的multiprocessing
本文向大家介绍c++实现简单的线程池,包括了c++实现简单的线程池的使用技巧和注意事项,需要的朋友参考一下 c++线程池,继承CDoit,实现其中的start和end 头文件 CPP文件 以上所述就是本文的全部内容了,希望大家能够喜欢。 请您花一点时间将文章分享给您的朋友或者留下评论。我们将会由衷感谢您的支持!
主要内容:1 内置线程池,1.1 newFixedThreadPool,1.2 newCachedThreadPool,1.3 newScheduledThreadPool,1.4 newSignalThreadExecutor,2 默认线程工厂,3 Runnable转换为Callable,4 总结详细介绍了Executors线程池工具类的使用,以及四大内置线程池。 Executors可以看作一个工具类,里面提供了好多静态方法,这些方法根据用户选择返回不同的内置线程池实例,或者返回线程工厂,或者
本文向大家介绍Python 使用threading+Queue实现线程池示例,包括了Python 使用threading+Queue实现线程池示例的使用技巧和注意事项,需要的朋友参考一下 一、线程池 1、为什么需要使用线程池 1.1 创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处理效率。 记创建线程消耗时间T1,执行任务消耗时间T2,销毁线程消耗时间T3,如果T1+T3