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

    下面是程序运行结果:

  • 相关阅读:
    vika维格表的新 CP ,飞书集成入口上线
    OKR落地四部曲:vika维格表帮你快速养成OKR思维
    ASP.NET, IIS, and Visual Web Developer 技巧与窍门
    VS2008 Tips #008 如何创建ASP.NET Web 用户控件并包含在Web 页面中
    VS2008 Tips #007 如何用 ListView 控件将数据排序
    VS2008 Tips #005 – 如何绑定 ListView 控件
    VS2008 Tip #001 创建、管理和运用样式的强大 CSS 工具
    VS2008 Tips #006 关于“标记导航”的特性
    VS2008 Tips #003 – VS 2008 的拆分视图可以设置为垂直分割
    VS2008 Tips #004 – 您可以通过“浏览方式…”添加浏览器到 Visual Web Developer
  • 原文地址:https://www.cnblogs.com/earthhouge/p/9885527.html
Copyright © 2020-2023  润新知