Redis(一) 简单安装介绍、测试存储
共同学习,不对的地方请指出,一起探讨!
1. 是一种key-value型存储的缓存服务器,又是一个nosql数据库服务器。
2. 存储数据多样 无列的概念。能存String、list、set、hashes等等,支持主从复制,自动重连等等。
3.用作缓存、近似于memcached,也可作为nosql数据库应用,读写速度快,满足高并发需求
4. JedisPool;在不同的线程中使用相同的Jedis实例会发生奇怪的错误。但是创建太多的实现也不好因为这意味着会建立很多sokcet连接,也会导致奇怪的错误发生。 单一Jedis实例不是线程安全的。为了避免这些问题,可以使用JedisPool, JedisPool是一个线程安全的网络连接池。可以用JedisPool创建一些可靠Jedis实例,可以从池中拿到Jedis的实例。这种方式可以解 决那些问题并且会实现高效的性能.
5.缺点,做为noslq数据库应用时,读写性能,受物理内存的限制。
一、Redis安装启动
1.安装
下载 redis-3.0.5.tar.gz -------- 解压 tar -zxvf 到相应文件夹 --------- 编译make
2.配置文件 在 解压目录下 redis.conf
3.启动 解压目录的src下 ./redis-server 启动 默认端口为 6379
4.客户端启动 解压目录的src下 ./redis-cli
eg: 简单的get、set测试
1.解压安装目录
2. src 下启动
3. 客户端 启用 并测试
4.关闭redis。直接kill 、 shutdown 都可
二、java 简单操作Redis存取(jedis)
1. 附上maven依赖
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.2.1</version> </dependency>
2. 简单测试
private static String ip = "192.168.1.118"; private static int port = 6379; /**** * 创建一个jedis实例 * * set 放值 get取值 key-Value 形式 类似于Map * */ @Test public void test1() { Jedis j = null; try{ j = new Jedis(ip, port); j.set("key1", "value111"); j.set("key2", "第二个值"); j.set("key3", "0"); j.incr("key3");//递增 logger.info("------1---:{}", j.get("key1")); logger.info("------2---:{}", j.get("key2")); logger.info("------3---:{}", j.get("key3")); }catch(Exception e){ logger.info("Exception---:{}",e.getMessage()); }finally{ if(j!=null) j.disconnect();//释放连接 } }
3.使用JedisPool 简单测试
@Test public void test3() { JedisPoolConfig jpl = new JedisPoolConfig(); // 设置一个JedisPool最多可分配多少个jedis实例,可通过JedisPool.getResource()来获取, //设置为-1表示不限制,如果JedisPool已经分配了MaxActive,则此时该jedisPool的状态为exhausted(耗尽) jpl.setMaxTotal(50000); //设置最大空闲实例数 jpl.setMaxIdle(5); //表示引用一个jedis实例时,最大等待时间,如果超出,则抛出JedisConnectionException; jpl.setMaxWaitMillis(1000*60*5); //表示在引用一个jedis实例时,是否进行验证操作,为true表示得到的实例都是可用的 jpl.setTestOnBorrow(true); JedisPool jp = new JedisPool(jpl,ip,port); Jedis j = null; try{ long start = System.currentTimeMillis(); logger.info("使用连接池递增开始时间:{}",start); for(int i =0;i<10000;i++){ j = jp.getResource(); j.incr("key3"); } long end = System.currentTimeMillis(); logger.info("使用连接池递增结束时间:{}",end); logger.info("耗时:{}",end-start); }catch(Exception e){ logger.info("Exception---:{}",e.getMessage()); }finally{ if(j!=null) jp.returnResource(j); //放回连接连接池 } }
参考:
http://www.aboutyun.com/thread-9223-1-1.html Redis介绍
http://www.linuxidc.com/Linux/2011-02/32700.htm Redis介绍
http://blog.csdn.net/freebird_lb/article/details/7733970 Redis学习入门篇
http://www.cnblogs.com/linjiqin/archive/2013/06/14/3135248.html 连接池配置及介绍