RedisX

Redis 线程池实现及用法
授权协议 LGPL
开发语言 Java
所属分类 服务器软件、 缓存服务器
软件类型 开源软件
地区 国产
投 递 者 阎佑运
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

RedisX

什么是 redisx?

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