zoukankan      html  css  js  c++  java
  • 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();
    }
    }

    下面是程序运行结果:

  • 相关阅读:
    TextView控件中使用android:drawableLeft图片和文字使用gravity只能使文字居中,无法使图片随文字同时居中, 让图片随文字同时居中
    Android Studio sdk无法下载的问题
    CollapsingToolbarLayout的使用,实现向上滑动时,图片自动压缩消失,下拉到最上面图片显示出来
    android studio开发app时,运行时百度地图显示合适,app打包后地图不显示
    两个日期相差的天数
    Android实现定点任务(定时定点做某事)
    Conversion to Dalvik format failed: Unable to execute dex: Cannot merge new index 69457 into a non-jumbo instruction!
    JSP易错点及常用标签
    Java异常机制总结
    java内存区域简单介绍
  • 原文地址:https://www.cnblogs.com/earthhouge/p/9885527.html
Copyright © 2011-2022 走看看