• redis的学习(三)java操作redis


    java操作reids

    redis服务的启动

    java操作redis之前,一定要把redis服务启动。在redis的目录下进入命令界面。输入redis-server redis.windows.conf,出现redis的标志说明redis服务启动成功。
    有的会出现Creating Server TCP listening socket 127.0.0.1:6379: bind: No error的错误,是因为安装时是自动启动的,redis服务在电脑开机时已经启动了。这里建议把redis服务设置为手动启动,尽量用带配置的命令去启动。

    然后进入redis客户端测试是否能够访问,并进行简单的测试。

    测试访问成功0

    java连接redis

    1.添加jedis和连接池的依赖

    2.实现redis连接
    实现类

    
    public class RedisClient {
        private Jedis jedis;//非切片客户端连接
        private JedisPool jedisPool;//非切片连接池
        private ShardedJedis shardedJedis;//切片客户端连接
        private ShardedJedisPool shardedJedisPool;//切片连接池
    
        public RedisClient() {
            initJedisPool();
            jedis = jedisPool.getResource();
            //因为是没有集群就只初始化了非切片的连接
    //        initShardedJedisPool();
    //        shardedJedis = shardedJedisPool.getResource();
        }
    
        private void initJedisPool() {
            //1.创建jedis连接池配置对象
            JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
            //2.配置jedis
            jedisPoolConfig.setMaxIdle(5);
            jedisPoolConfig.setMaxTotal(20);
            jedisPoolConfig.setMaxWaitMillis(1000);
            jedisPoolConfig.setTestOnBorrow(true);//测试连接是否畅通
            //3.创建jedis连接池
            jedisPool = new JedisPool(jedisPoolConfig, "127.0.0.1", 6379, 1000, "12345");
        }
    
        private void initShardedJedisPool() {
            JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
            jedisPoolConfig.setMaxIdle(5);
            jedisPoolConfig.setMaxTotal(20);
            jedisPoolConfig.setMaxWaitMillis(1000);
            jedisPoolConfig.setTestOnBorrow(true);
    
            //配置多个shared
            List<JedisShardInfo> sharedInfos = new ArrayList<JedisShardInfo>();
            JedisShardInfo jedisShardInfo = new JedisShardInfo("127.0.0.1", 6379, 1000);
            jedisShardInfo.setPassword("12345");
            sharedInfos.add(jedisShardInfo);
    
    
            shardedJedisPool = new ShardedJedisPool(jedisPoolConfig,sharedInfos);
        }
    
        public void call() {
            stringOperate();
            listOperate();
            setOperate();
            hashOperate();
            sortedSetOperate();
    
            jedisPool.returnResource(jedis);
            //shardedJedisPool.returnBrokenResource(shardedJedis);
        }
    
        /**
         * string的基本操作
         * set添加、修改
         * get 获取
         * append 追加
         * del 删除
         */
        public void stringOperate() {
            jedis.flushAll();
            System.out.println("reids的string类型命令============================");
            jedis.set("test1", "10");
            jedis.set("test2", "20");
            System.out.println("取出存储的string类型的值");
            System.out.println(jedis.get("test1"));
            System.out.println(jedis.get("test2"));
            System.out.println("让两个key的自增");
            System.out.println(jedis.incr("test1"));
            System.out.println(jedis.incr("test2"));
            System.out.println("setnx功能测试");
            System.out.println("第一次设置,如果为1,设置成功,0失败;两次设置key相同返回值为" + jedis.setnx("test3", "suo"));
            System.out.println("第二次设置,如果为1,设置成功,0失败;返回值为" + jedis.setnx("test3", "suo"));
    
        }
    
        /**
         * list操作
         * lpush rpush设置列表值
         * lrange 获取list值
         * lrem 删除
         * lset 修改
         * <p>
         * sort排序
         * 数字,不用加sortrams,字母需要加,并且是ASCII排序
         */
        public void listOperate() {
            jedis.flushAll();
            System.out.println("redis对list类型操作=============");
            jedis.lpush("key1", "value1", "value2", "value3");
            jedis.rpush("key1", "value4");
            System.out.println("获取添加list的值");
            System.out.println(jedis.lrange("key1", 0, -1));
            jedis.lset("key1", 0, "test5");
            System.out.println("查看修改过后索引位置的值:" + jedis.lindex("key1", 0));
            jedis.lrem("key1", 1, "value1");
            System.out.println("删除1个值为value1后的list:" + jedis.lrange("key1", 0, -1));
    
        }
    
        /**
         * sadd 添加
         * srem 删除
         * smembers 查看所有成员
         * sinter 交集
         * sinterstore 交集保存到新的set
         * sunion 并集
         * sunionstore 并集保存到新的set
         * sdiff 差集
         * sdiffstore 差集保存到新的set
         */
        public void setOperate() {
            jedis.flushAll();
            System.out.println("对set类型的操作=========================");
            jedis.sadd("key1", "a1", "a2", "a3", "a4", "a5");
            jedis.sadd("key2", "a1", "a3", "a5");
            jedis.sadd("key3", "a2", "a4");
            System.out.println("获取对应key的成员值key1" + jedis.smembers("key1") + " key2:" + jedis.smembers("key2") + " key3:" + jedis.smembers("key3"));
            System.out.println("key1和key3交集:" + jedis.sinter("key1", "key3"));
            jedis.sinterstore("key4", "key1", "key3");
            System.out.println("交集获得新的set key4:" + jedis.smembers("key4"));
            System.out.println("key2和key3并集:" + jedis.sunion("key2", "key3"));
            jedis.sunionstore("key5", "key2", "key3");
            System.out.println("并集获得新的set key5:" + jedis.smembers("key5"));
            System.out.println("key1和key2差集:" + jedis.sdiff("key1", "key2"));
            jedis.sdiffstore("key6", "key1", "key2");
            System.out.println("差集获得新的set key6" + jedis.smembers("key6"));
        }
    
        /**
         * hset 设置或者修改
         * hgetAll 获取所有
         * hdel 删除
         * hincrby 自增
         * hkeys 查询key所有的成员
         * hvalues 查询key所有的成员的value
         */
        public void hashOperate() {
            jedis.flushAll();
            System.out.println("对hash类型的操作===========================");
            jedis.hset("key1", "field1", "10");
            HashMap<String, String> hashMap = new HashMap<>();
            hashMap.put("field2", "20");
            hashMap.put("field3", "30");
            hashMap.put("field4", "22");
            jedis.hmset("key1", hashMap);
            System.out.println("获取key1所有的成员:" + jedis.hgetAll("key1"));
            jedis.hincrBy("key1", "field1", 5);
            System.out.println("为key1的指定成员field1增加5后的值:" + jedis.hget("key1", "field1"));
            System.out.println("获取key1的所有成员:" + jedis.hkeys("key1"));
            System.out.println("获取key1所有成员的value:" + jedis.hvals("key1"));
        }
    
        /**
         * zadd 添加
         * zcard 返回成员数
         * zcount 计算区间中的成员数
         * zrange 返回集合区间的成员 当start为0,stop为1时查看全部区间;
         * zrem 删除集合中成员
         * zremrangebyrank 删除集合中给定排名区间的成员
         */
        public void sortedSetOperate() {
            jedis.flushAll();
            System.out.println("对sortedset类型的操作");
            jedis.zadd("key1", 20, "member1");
            jedis.zadd("key1", 30, "member2");
            jedis.zadd("key1", 15, "member3");
            System.out.println("获取集合区间的所有成员和分数" + jedis.zrangeWithScores("key1", 0, -1));
            System.out.println("获取成员数" + jedis.zcard("key1"));
            System.out.println("获取20-30区间的成员数" + jedis.zcount("key1", 20, 30));
            jedis.zremrangeByRank("key1", 1, 2);
            System.out.println(jedis.zrangeWithScores("key1", 0, -1));
    
        }
    
    
    }
    
    

    测试结果

    1. string类型

    2. list类型

    3. set类型

    4. hash类型

    5. sortedSet类型

  • 相关阅读:
    delphi自动生成资源的REST CRUD工具
    delphi将*.proto转换为pascal工具
    delphi数据表自动生成rest CRUD和rest api在线文档
    delphi基于泛型结构的数据序列
    unidac连接字符串
    dremio 当前支持的权限
    使用jxray分析jvm heap 信息
    apache spark conenct 提升spark 能力
    dremio udf 参考调用处理
    cube.js 0.30.30 之后自定义driver 开发的一些问题说明
  • 原文地址:https://www.cnblogs.com/cqy1026/p/13823808.html
Copyright © 2020-2023  润新知