redis java常用API

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();
}
}

下面是程序运行结果:

猜你喜欢

转载自www.cnblogs.com/earthhouge/p/9140621.html