Redis 是一个完全开源免费的高性能的key-value数据库,常常用作缓存,它有丰富的API接口,下面是学习总结。

import redis.clients.jedis.*;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

/**
 * Created by songhou2 on 2018/6/6.
 */
public class RedisTest { /** * Jedis就是封装了redis的一些命令操作的java客户端 * */ private static Jedis jedis = null; /** * Jedis实例不是线程安全的,所以为了避免一些线程安全问题,Jedis提供了线程池JedisPool * */ private static JedisPool jedisPool = null; /** * redis在版本2的时候不支持redis集群,Jedis只能支持单redis服务器操作,此时redis服务器只能通过多个相互独立的 * 主从服务器进行横向扩展,使用SharedJedis老师先分布式缓存,ShardedJedis通过一致性哈希表来实现分布式缓存。 * */ private static ShardedJedis shardedJedis = null; /** * ShardedJedis的线程池ShardedJedisPool * */ private static ShardedJedisPool shardedJedisPool = null; private static final String ip = "127.0.0.1";//Redis服务器IP private static final Integer port = 6379;//Redis的端口号 private static final Integer timeout = 1000;//连接redis的等待时间 private static final Integer maxTotal = 1024;//可连接实例的最大数目,默认值为8 private static final Integer maxIdle = 200;//控制一个pool最多有多少个状态为idle的jedis实例,默认值为8 private static final Integer maxWait = 10000;//等待可用连接的最大时间 private static final boolean testOnBorrow = true;//在borrow一个jedis实例时,是否提前进行validate操作,如果为ture,则得到的jedis实例均是可用的 /** * 初始化非切片池 * */ private static void initialPool(){ try { JedisPoolConfig config = new JedisPoolConfig(); config.setMaxIdle(maxIdle); config.setMaxTotal(maxTotal); config.setMaxWaitMillis(maxWait); config.setTestOnBorrow(testOnBorrow); jedisPool = new JedisPool(config,ip,port,timeout); }catch (Exception e){ e.printStackTrace(); } } /** * 初始化切片池 * */ private static void initialShardedPool(){ try { JedisPoolConfig config = new JedisPoolConfig(); config.setMaxIdle(maxIdle); config.setMaxTotal(maxTotal); config.setMaxWaitMillis(maxWait);
       config.setTestOnBorrow(testOnBorrow); List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>(); shards.add(new JedisShardInfo(ip,port)); //构造池 shardedJedisPool = new ShardedJedisPool(config,shards); }catch (Exception e){ e.printStackTrace(); } } public static void testKey() { System.out.println("======================testKey=========================="); // 清空数据 System.out.println("清空库中所有数据:"+jedis.flushDB()); // 判断key否存在 System.out.println("判断k1键是否存在:"+shardedJedis.exists("k1")); System.out.println("新增k1,v1键值对:"+shardedJedis.set("k1", "v1")); System.out.println("判断k1是否存在:"+shardedJedis.exists("k1")); // 继续添加(key,value)
 System.out.println("新增k2,v2键值对:"+shardedJedis.set("k2", "v2"));
 System.out.println("新增k3,v3键值对:"+shardedJedis.set("k3", "v3"));
 // 输出系统中所有的key 
 System.out.println("系统中所有键如下:"); 
 Set<String> keys = jedis.keys("*"); 
 Iterator<String> it=keys.iterator() ; 
 while(it.hasNext()){ 
 String key = it.next(); 
 System.out.println(key);
 } 
 // 删除某个key,若key不存在,则忽略该命令。 
 System.out.println("系统中删除k2: "+jedis.del("k2")); 
 System.out.println("判断k2是否存在:"+shardedJedis.exists("k2")); 
 } 
 /** * 获取客户端连接 * */ 
 public static void init(){ 
 initialPool(); 
 initialShardedPool(); 
 jedis = jedisPool.getResource(); 
 shardedJedis = shardedJedisPool.getResource(); 
 } 
 public static void main(String[] args) { 
 init(); 
 System.out.println("测试jedis运行情况: "+jedis.ping());
 testKey(); 
 jedis.close(); 
 shardedJedis.close(); 
 } 
}


下面是程序运行结果:

redis java 下载 redis java api_数据库