前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >redis学习(十二)

redis学习(十二)

作者头像
崔笑颜
发布2020-09-11 11:22:19
6090
发布2020-09-11 11:22:19
举报

jedis

什么是Jedis 是 Redis 官方推荐的 java连接开发工具! 使用Java 操作Redis 中间件!如果你要使用 java操作redis,那么一定要对Jedis 十分的熟悉! 两者的命令一样。

1、导入依赖

代码语言:javascript
复制
		// https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind
    compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.11.1'
    // https://mvnrepository.com/artifact/redis.clients/jedis
    compile group: 'redis.clients', name: 'jedis', version: '3.3.0'

2、编码测试

  • 连接数据库
  • 操作命令
  • 断开连接
代码语言:javascript
复制
package com.cxy.redis;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import redis.clients.jedis.Jedis;

import java.util.HashMap;
import java.util.Set;
import java.util.concurrent.TimeUnit;

@SpringBootTest
class RedisApplicationTests {
    @Test
    public void testPing() {
        Jedis jedis = new Jedis("192.168.106.129", 6666);
        //如果没有密码,就可以省略下面步骤。
        jedis.auth("cxy0809.");
        System.out.println(jedis.ping());
    }

    @Test
    public void testKey() {
        Jedis jedis = new Jedis("192.168.106.129", 6666);
        //如果没有密码,就可以省略下面步骤。
        jedis.auth("cxy0809.");
        //测试key-value的用法
        System.out.println("1.清空数据:" + jedis.flushDB());
        System.out.println("2.判断某个键是否存在:" + jedis.exists("username"));
        System.out.println("3.新增<'username','lq'>的键值对:" + jedis.set("username", "lq"));
        System.out.println("4.新增<'password','123456'>的键值对:" + jedis.set("password", "123456"));
        System.out.println("5.系统中所有的键如下:");
        Set<String> keys = jedis.keys("*");
        System.out.println(keys);
        System.out.println("6.删除键password:" + jedis.del("password"));
        System.out.println("7.判断键password是否存在:" + jedis.exists("password"));
        System.out.println("8.查看键username缩存储的值的类型:" + jedis.type("username"));
        System.out.println("9.随机返回key空间的某一个:" + jedis.randomKey());
        System.out.println("10.重命名key:" + jedis.rename("username", "myname"));
        System.out.println("11.取出改后的myname:" + jedis.get("myname"));
        System.out.println("12.按索引查询:" + jedis.select(0));
        System.out.println("13.删除当前选择数据库的所有key:" + jedis.flushDB());
        System.out.println("14.返回当前数据库中key的数目:" + jedis.dbSize());
        System.out.println("15.删除所有数据库中的所有key:" + jedis.flushAll());
    }

    @Test
    public void testString() {
        Jedis jedis = new Jedis("192.168.106.129", 6666);
        //如果没有密码,就可以省略下面步骤。
        jedis.auth("cxy0809.");
        jedis.flushDB();
        System.out.println("===================增加数据====================");
        System.out.println(jedis.set("key1", "value1"));
        System.out.println(jedis.set("key2", "value2"));
        System.out.println(jedis.set("key3", "value3"));
        System.out.println("1.删除键key2:" + jedis.del("key2"));
        System.out.println("2.获取键key2:" + jedis.get("key2"));
        System.out.println("3.修改key1:" + jedis.set("key1", "valueChanged"));
        System.out.println("4.获取key1的值:" + jedis.get("key1"));
        System.out.println("5.在key3后面追加值:" + jedis.append("key3", "End"));
        System.out.println("6.获取key3的值:" + jedis.get("key3"));
        System.out.println("7.增加多个键值对:" + jedis.mset("key4", "value4", "key5", "value5"));
        System.out.println("8.获取多个键值对:" + jedis.mget("key1", "key4"));
        System.out.println("9.获取多个键值对:" + jedis.mget(""));
        System.out.println("10.删除多个键值对:" + jedis.del("key1", "key4"));
        System.out.println("11.获取多个键值对:" + jedis.mget("key1", "key2"));

        jedis.flushDB();
        System.out.println("================新增键值对防止被覆盖================");
        System.out.println(jedis.setnx("key1", "value1"));
        System.out.println(jedis.setnx("key2", "value2"));
        System.out.println(jedis.setnx("key2", "value2-newValue"));
        System.out.println(jedis.get("key1"));
        System.out.println(jedis.get("key2"));

        System.out.println("================新增键值对并设置有效时间================");
        System.out.println(jedis.setex("key3", 2, "value3"));
        System.out.println(jedis.get("key3"));
        try {
            TimeUnit.SECONDS.sleep(3);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(jedis.get("key3"));

        System.out.println("================获取原值,更新为新值================");
        System.out.println(jedis.getSet("key2", "key2GetSet"));
        System.out.println(jedis.get("key2"));
        System.out.println("截取指定下标key2的字符串:" + jedis.getrange("key2", 2, 4));
    }

    @Test
    public void testList() {
        Jedis jedis = new Jedis("192.168.106.129", 6666);
        //如果没有密码,就可以省略下面步骤。
        jedis.auth("cxy0809.");

        jedis.flushDB();
        System.out.println("=========添加一个List========");
        jedis.lpush("collections", "ArrayList", "Vector", "Stack", "HashMap");
        jedis.lpush("collections", "HashSet");
        jedis.lpush("collections", "TreeSet");//从左边往进加
        jedis.rpush("collections", "HashMap");//从右边往进加
        jedis.lpush("collections", "TreeMap");
        System.out.println("collections中的内容:" + jedis.lrange("collections", 0, -1));//-1代表倒数第一个
        System.out.println("collections中0到3区间的内容:" + jedis.lrange("collections", 0, 3));
        System.out.println("============================");
        //删除列表指定的值,第二个参数为删除的个数(有重复时)!后add进去的值先被删掉,类似于出栈!
        System.out.println("删除指定个数的元素:" + jedis.lrem("collections", 2, "HashMap"));
        System.out.println("collections中的内容:" + jedis.lrange("collections", 0, -1));
        System.out.println("删除下标0-3区间之外的元素:" + jedis.ltrim("collections", 0, 3));
        System.out.println("collections中的内容:" + jedis.lrange("collections", 0, -1));
        System.out.println("collections列表出栈(左):" + jedis.lpop("collections"));
        System.out.println("collections中的内容:" + jedis.lrange("collections", 0, -1));
        System.out.println("collections列表出栈(右):" + jedis.rpop("collections"));
        System.out.println("collections中的内容:" + jedis.lrange("collections", 0, -1));
        System.out.println("修改指定下标1的内容:" + jedis.lset("collections", 1, "hahaaha"));
        System.out.println("collections中的内容:" + jedis.lrange("collections", 0, -1));
        System.out.println("============================");
        System.out.println("collections的长度:" + jedis.llen("collections"));
        System.out.println("获取指定下标1的元素:" + jedis.lindex("collections", 1));
        System.out.println("==============排序==============");
        jedis.lpush("sortedList", "5", "6", "4", "3", "9", "1");
        System.out.println("排序前:" + jedis.lrange("sortedList", 0, -1));
        System.out.println("排序后:" + jedis.sort("sortedList"));

    }

    @Test
    public void testSet() {
        Jedis jedis = new Jedis("192.168.106.129", 6666);
        //如果没有密码,就可以省略下面步骤。
        jedis.auth("cxy0809.");

        jedis.flushDB();
        System.out.println("===============向集合中添加元素(不重复)================");
        System.out.println(jedis.sadd("set", "e1", "e3", "e2", "e5", "e7", "e4", "e0", "e8"));
        System.out.println(jedis.sadd("set", "e6"));
        System.out.println(jedis.sadd("set", "e6"));
        System.out.println("set集合中所有的元素为:" + jedis.smembers("set"));
        System.out.println("删除一个指定元素e0:" + jedis.srem("set", "e0"));
        System.out.println("set集合中所有的元素为:" + jedis.smembers("set"));
        System.out.println("删除多个指定元素e7,e5:" + jedis.srem("set", "e7", "e5"));
        System.out.println("set集合中所有的元素为:" + jedis.smembers("set"));
        System.out.println("随机的移除集合中的一个元素:" + jedis.spop("set"));
        System.out.println("随机的移除集合中的一个元素:" + jedis.spop("set"));
        System.out.println("set集合中所有的元素为:" + jedis.smembers("set"));
        System.out.println("set集合中的元素个数:" + jedis.scard("set"));
        System.out.println("e1是否在set集合中:" + jedis.sismember("set", "e1"));
        System.out.println("========================================================");
        System.out.println(jedis.sadd("set1", "e1", "e3", "e2", "e5", "e7", "e4", "e6"));
        System.out.println(jedis.sadd("set2", "e1", "e3", "e0", "e5", "e8", "e4", "e6"));
        System.out.println("将set1中的元素删掉e1并将e1存入set3中:" + jedis.smove("set1", "set3", "e1"));
        System.out.println("将set1中的元素删掉e5并将e5存入set3中:" + jedis.smove("set1", "set3", "e5"));
        System.out.println("set1集合中所有的元素为:" + jedis.smembers("set1"));
        System.out.println("set3集合中所有的元素为:" + jedis.smembers("set3"));
        System.out.println("=====================集合运算=======================");
        System.out.println("set1集合中所有的元素为:" + jedis.smembers("set1"));
        System.out.println("set2集合中所有的元素为:" + jedis.smembers("set2"));
        System.out.println("set1与set2集合的并集:" + jedis.sunion("set1", "set2"));
        System.out.println("set1与set2集合的交集:" + jedis.sinter("set1", "set2"));
        System.out.println("set1与set2集合的差集:" + jedis.sdiff("set1", "set2"));//set1与set2中去掉交集后剩余的元素
        jedis.sinterstore("set4", "set1", "set2");//求交集并将交集保存在dstkey中
        System.out.println("set4集合中所有的元素为:" + jedis.smembers("set4"));
    }

    @Test
    public void tsetHash() {
        Jedis jedis = new Jedis("192.168.106.129", 6666);
        //如果没有密码,就可以省略下面步骤。
        jedis.auth("cxy0809.");

        HashMap<String, String> map = new HashMap<String, String>();
        map.put("k1", "v1");
        map.put("k2", "v2");
        map.put("k3", "v3");
        map.put("k4", "v4");

        //添加元素
        jedis.hmset("hash", map);
        //还可以这么添加
        jedis.hset("hash", "k5", "v5");
        System.out.println("散列hash的所有键值对:" + jedis.hgetAll("hash"));
        System.out.println("散列hash的所有键:" + jedis.hkeys("hash"));
        System.out.println("散列hash的所有值:" + jedis.hvals("hash"));
        System.out.println("将k6的保存的值加上一个整数,如果k6不存在则添加k6:" + jedis.hincrBy("hash", "k6", 5));
        System.out.println("散列hash的所有键值对:" + jedis.hgetAll("hash"));
        System.out.println("将k6的保存的值加上一个整数,如果k6不存在则添加k6:" + jedis.hincrBy("hash", "k6", 5));
        System.out.println("散列hash的所有键值对:" + jedis.hgetAll("hash"));
        System.out.println("删除一个或者多个键值对:" + jedis.hdel("hash", "k1", "k3"));
        System.out.println("散列hash的所有键值对:" + jedis.hgetAll("hash"));
        System.out.println("散列hash的所有键值对个数:" + jedis.hlen("hash"));
        System.out.println("判断k2是否在hash中:" + jedis.hexists("hash", "k2"));
        System.out.println("判断k1是否在hash中:" + jedis.hexists("hash", "k1"));
        System.out.println("获取hash中的一个值:" + jedis.hmget("hash", "k4"));
        System.out.println("获取hash中的多个值:" + jedis.hmget("hash", "k4", "k6"));
    }

    @Test
    public void testZset() {
        Jedis jedis = new Jedis("192.168.106.129", 6666);
        //如果没有密码,就可以省略下面步骤。
        jedis.auth("cxy0809.");

        jedis.flushDB();
        jedis.zadd("myset", 1, "one");
        jedis.zadd("myset", 2, "two");
        jedis.zadd("myset", 3, "three");
        System.out.println("查看全部的值:" + jedis.zrange("myset", 0, -1));

        jedis.flushDB();
        jedis.zadd("salsry", 2500, "zhangsan");
        jedis.zadd("salsry", 500, "lisi");
        jedis.zadd("salsry", 5000, "wangwu");
        System.out.println("由高到低排序:" + jedis.zrangeByScore("salsry", "-inf", "+inf"));
        System.out.println("由高到低排序:" + jedis.zrevrangeByScore("salsry", "+inf", "-inf"));
        System.out.println("查看全部的值:" + jedis.zrange("salsry", 0, -1));
        jedis.zrem("salsry", "lisi");
        System.out.println("查看全部的值:" + jedis.zrange("salsry", 0, -1));
        System.out.println("查看所有元素的个数:" + jedis.zcard("salsry"));

        jedis.flushDB();
        jedis.zadd("myset", 1, "one");
        jedis.zadd("myset", 2, "two");
        jedis.zadd("myset", 3, "three");
        jedis.zadd("myset", 4, "four");
        System.out.println("获取指定区间元素的个数:" + jedis.zcount("myset", 0, 3));
    }


}

常用api

所有的api命令,就是我们对应的上面学习的指令,一个都没有变化!如上,其实就是中文api。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-09-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • jedis
    • 常用api
    相关产品与服务
    云数据库 Redis
    腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档