Redis: 渐进式遍历 redis中Java的使用 redis中Java集成到Spring Boot

渐进式遍历

在平常的遍历中,keys一次性会把整个redis中的key都获取到,这个操作十分的危险,可能会一下子得到太多的key,从而阻塞服务器。

所以我们可以通过渐进式遍历,既可以得到key,又不会阻塞服务器

渐进式遍历其实是一组的命令

 

redis中Java的使用

jedis是一个 Java语言编写的 Redis 客户端库,用于让 Java 程序通过代码连接并操作 Redis 数据库

jedis在redis中的一些基本命令的使用

jedis中的普通命令

package org.blame;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.params.SetParams;

import java.util.Set;

public class JedisDemoGeneral {
    public static void main(String[] args) {
        JedisPool jedisPool=new JedisPool("tcp://127.0.0.1:8888");
//        try的作用是用完会自动的关闭()中的资源,不需要你手动进行关闭
        try(Jedis jedis=jedisPool.getResource()){
//在Jedis中的各种方法中,都对应着redis中的各种命令
//            String pong=jedis.ping();
//            System.out.println(pong);
//            test1(jedis);
//            test2(jedis);
//            test3(jedis);
//            test4(jedis);
            test5(jedis);
        }
    }



    public static void test5(Jedis jedis){
        jedis.flushAll();
        jedis.set("k1","11");
        String k = jedis.type("k1");
        System.out.println(k);
        jedis.lpush("k2","12","22");
        k=jedis.type("k2");
        System.out.println(k);
        jedis.hset("k5","hm","12");
        k=jedis.type("k5");
        System.out.println(k);

        jedis.sadd("k3","2");
        k=jedis.type("k3");
        System.out.println(k);
        jedis.zadd("k4",12,"ixaohei");
        k=jedis.type("k4");
        System.out.println(k);
    }
    public static void test4(Jedis jedis){
        jedis.flushAll();
        jedis.set("k","123");
        try {
            Thread.sleep(4000);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        long k = jedis.ttl("k");
        System.out.println(k);

    }
    public static void test3(Jedis jedis){
        jedis.flushAll();
        jedis.set("a","123");
        jedis.set("b","555");
        Set<String> keys = jedis.keys("*");
        System.out.println(keys);
    }

    public static void test2(Jedis jedis){
        System.out.println(" del和 exist");
        jedis.set("key","123");
        jedis.set("key2","1234");
        boolean key = jedis.exists("key");
        System.out.println(key);

//        del中支持删除多个key
        long key2 = jedis.del("key2");
        System.out.println(key2);
        boolean key3 = jedis.exists("key2");
        System.out.println(key3);
    }
    public static void test1(Jedis jedis){
        jedis.set("a","123");
        jedis.set("b","555");

        SetParams params=new SetParams();
        params.ex(10);
        params.xx();
        jedis.set("a","888",params);
        String ret1=jedis.get("a");
        String ret2=jedis.get("b");
        System.out.println(ret1);
        System.out.println(ret2);
    }

}

Jedis中的String类型的命令 

package org.blame;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

import java.util.List;

public class JedisDemoString {

    public static void main(String[] args) {
        JedisPool jedisPool=new JedisPool("tcp://127.0.0.1:8888");
        try(Jedis jedis=jedisPool.getResource()){
//            test1(jedis);
//            test2(jedis);
            test3(jedis);

        }
    }

    public static void test3(Jedis jedis){
        jedis.flushAll();
        jedis.set("k","213");
        long k = jedis.incr("k");
        String string = jedis.get("k");
        System.out.println(k);
        System.out.println(string);
        k = jedis.decr("k");
        String string1=jedis.get("k");
        System.out.println(k);
        System.out.println(string1);
    }
    public static void test2(Jedis jedis){
        jedis.flushAll();
        jedis.set("k","fdsfgdfs");
        jedis.append("k","1111");
        String s = jedis.get("k");
        System.out.println(s);
    }
    public static void test1(Jedis jedis){
        jedis.flushAll();
        String k = jedis.mset("s", "1", "s2", "2", "s3", "3");
        System.out.println(k);
        jedis.set("k","dsfdssdfds");
        String k1 = jedis.getrange("k", 2, 5);
        System.out.println(k1);

        jedis.setrange("k", 2, "ppp");
        String s = jedis.get("k");
        System.out.println(s);
    }

}

Jedis中的List类型的命令 

package org.blame;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

import java.util.List;

public class JedisDemoList {
    public static void main(String[] args) {
        JedisPool jedisPool=new JedisPool("tcp://127.0.0.1:8888");
        try(Jedis jedis=jedisPool.getResource()){
//            test1(jedis);
//            test2(jedis);
//            test3(jedis);
//            test4(jedis);
//            test5(jedis);
            test6(jedis);

        }
    }
    public static void test6(Jedis jedis){
        jedis.flushAll();
        jedis.lpush("k","111","222","333");
        long k = jedis.llen("k");
        System.out.println(k);
    }

    public static void test5(Jedis jedis){
        jedis.flushAll();
//        jedis.lpush("key","1");

        List<String> key = jedis.blpop(100, "key");
        System.out.println(key);

    }
    public static void test4(Jedis jedis){
        jedis.flushAll();
        jedis.lpush("k","111","222","333");
//        尾删
        String k = jedis.rpop("k");
        System.out.println(k);
        k = jedis.rpop("k");
        System.out.println(k);
        k = jedis.rpop("k");
        System.out.println(k);
        k = jedis.rpop("k");
        System.out.println(k);
        System.out.println(jedis.get("k"));


    }
    public static void test3(Jedis jedis){
        jedis.flushAll();
        jedis.lpush("k","111","222","333");
//        头删
        String k = jedis.lpop("k");
        System.out.println(k);
        k = jedis.lpop("k");
        System.out.println(k);
        k = jedis.lpop("k");
        System.out.println(k);
        k = jedis.lpop("k");
        System.out.println(k);
        System.out.println(jedis.get("k"));


    }
    public static void test2(Jedis jedis){
        jedis.flushAll();
//        尾插
        long k = jedis.rpush("k", "12", "21", "21", "44");
        System.out.println(k);
        List<String> k1 = jedis.lrange("k", 0, -1);
        System.out.println(k1);
    }
    public static void test1(Jedis jedis){
        jedis.flushAll();
//        头插
        long k = jedis.lpush("k", "12", "21", "21", "44");
        System.out.println(k);
        List<String> k1 = jedis.lrange("k", 0, -1);
        System.out.println(k1);
    }
}

Jedis中的Hash类型的命令 

package org.blame;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class JedisDemoHash {
    public static void main(String[] args) {
        JedisPool jedisPool=new JedisPool("tcp://127.0.0.1:8888");
        try(Jedis jedis=jedisPool.getResource()){
//            test1(jedis);
//            test2(jedis);
//            test3(jedis);
//            test4(jedis);
            test5(jedis);
        }
    }

    public static void test5(Jedis jedis){
        jedis.flushAll();
        jedis.hset("k","f1","111");
        jedis.hset("k","f2","111");
        jedis.hset("k","f3","111");
        jedis.hset("k","f4","111");

        List<String> hmget = jedis.hmget("k", "f1", "f2", "f3");
        System.out.println(hmget);



    }
    public static void test4(Jedis jedis){
        jedis.flushAll();
        jedis.hset("k","f1","111");
        jedis.hset("k","f2","111");
        jedis.hset("k","f3","111");
        jedis.hset("k","f4","111");
        List<String> k1 = jedis.hvals("k");
        Set<String> k = jedis.hkeys("k");
        System.out.println(k1);
        System.out.println(k);


    }
    public static void test3(Jedis jedis){
        jedis.flushAll();
        jedis.hset("k","f1","111");
        jedis.hset("k","f2","111");
        jedis.hset("k","f3","111");
        jedis.hset("k","f4","111");
        long hdel = jedis.hdel("k", "f1", "f2", "f4");
        System.out.println(hdel);
        boolean hexists = jedis.hexists("k", "f1");
        System.out.println(hexists);


    }
    public static void test2(Jedis jedis){
        jedis.flushAll();
        jedis.hset("k","f1","111");
        boolean hexists = jedis.hexists("k", "f1");
        System.out.println(hexists);
        boolean hexists1 = jedis.hexists("k", "f2");
        System.out.println(hexists1);
    }

        public static void test1(Jedis jedis){
        jedis.flushAll();
        jedis.hset("k","f1","111");
        Map<String,String> hashMap=new HashMap<>();
        hashMap.put("f2","12");
        hashMap.put("f3","13");
        hashMap.put("f4","14");
        hashMap.put("f5","15");
        jedis.hset("k",hashMap);
        String hget = jedis.hget("k", "f1");
        System.out.println(hget);
        hget = jedis.hget("k", "f2");
        System.out.println(hget);
        hget = jedis.hget("k", "f3");
        System.out.println(hget);
        hget = jedis.hget("k", "f4");
        System.out.println(hget);

    }
}

Jedis中的Set类型的命令 

package org.blame;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

import java.util.Set;

public class JedisDemoSet {
    public static void main(String[] args) {
        JedisPool jedisPool=new JedisPool("tcp://127.0.0.1:8888");
        try(Jedis jedis=jedisPool.getResource()){
//            test1(jedis);
//            test2(jedis);
//            test3(jedis);
            test4(jedis);
        }
    }public static void test4(Jedis jedis){
        jedis.flushAll();
        jedis.sadd("k","111","222","333");
        jedis.sadd("k2","333","222","888");
        Set<String> sinter = jedis.sinter("k", "k2");
        System.out.println(sinter);
        long sinterstore = jedis.sinterstore("kk", "k", "k2");
        System.out.println(sinterstore);
        System.out.println(jedis.smembers("kk"));
    }
    public static void test3(Jedis jedis){

    }
    public static void test2(Jedis jedis){
        jedis.flushAll();
        jedis.sadd("k","111","222","333");
        String k = jedis.spop("k");
        System.out.println(k);
    }
    public static void test1(Jedis jedis){
        jedis.flushAll();
        jedis.sadd("k","111","222","333");
        Set<String> k = jedis.smembers("k");
        System.out.println(k);

        boolean k1 = jedis.sismember("k", "111");
        System.out.println(k1);
        long k11 = jedis.scard("k");
        System.out.println(k11);
    }
}

Jedis中的ZSet类型的命令 

package org.blame;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.resps.Tuple;

import java.util.List;

public class JedisDemoZSet {
    public static void main(String[] args) {
        JedisPool jedisPool=new JedisPool("tcp://127.0.0.1:8888");
        try(Jedis jedis=jedisPool.getResource()){
//            test1(jedis);
//            test2(jedis);
//            test3(jedis);
//            test4(jedis);
            test5(jedis);
        }
    }

    public static void test5(Jedis jedis) {
        jedis.flushAll();
        jedis.zadd("k", 12, "zhangsan");
        jedis.zadd("k", 13, "lisi");
        jedis.zadd("k", 14, "xiaohei");
        Long zrank = jedis.zrank("k", "xiaohei");
        System.out.println(zrank);
    }
        public static void test4(Jedis jedis){
        jedis.flushAll();
        jedis.zadd("k",12,"zhangsan");
        jedis.zadd("k",13,"lisi");
        jedis.zadd("k",14,"xiaohei");
        Double zscore = jedis.zscore("k", "zhangsan");
        System.out.println(zscore);
    }
    public static void test3(Jedis jedis){
        jedis.flushAll();
        jedis.zadd("k",12,"zhangsan");
        jedis.zadd("k",13,"lisi");
        jedis.zadd("k",14,"xiaohei");
        long zrem = jedis.zrem("k", "zhangsan", "lisi");
        System.out.println(zrem);
    }
    public static void test2(Jedis jedis){
        jedis.flushAll();
        jedis.zadd("k",12,"zhangsan");
        jedis.zadd("k",13,"lisi");
        jedis.zadd("k",14,"xiaohei");
        long k = jedis.zcard("k");
        System.out.println(k);
    }

    public static void test1(Jedis jedis){
        jedis.flushAll();
        jedis.zadd("k",12,"zhangsan");
        jedis.zadd("k",13,"lisi");
        jedis.zadd("k",14,"xiaohei");
        List<String> k = jedis.zrange("k", 0, -1);
        System.out.println(k);
        List<Tuple> k1 = jedis.zrangeWithScores("k", 0, -1);
        System.out.println(k1);
        double k2 = jedis.zrangeWithScores("k", 0, -1).get(0).getScore();
        String k3 = jedis.zrangeWithScores("k", 0, -1).get(0).getElement();
        System.out.println(k2);
        System.out.println(k3);
    }
}

redis中Java集成到Spring Boot

在Spring中为什么不用Jedis,而是用RedisTemplate 

RedisTemplate 是 Spring Data Redis 提供的抽象封装,它比 Jedis 更适合在 Spring 框架中使用

RedisTemplate的优势对比 

如何在spring中使用redis 

引入redis的依赖

RedisTemplate使用

RedisTemplate是把各种类型的方法进行分类了 

String类型的执行

@RestController
public class MyController {
    @Autowired
    private StringRedisTemplate redisTemplate;

    @ResponseBody
    @RequestMapping("/testString")
    private String testString(){
        redisTemplate.opsForValue().set("key","11");
        redisTemplate.opsForValue().set("key2","22");
        redisTemplate.opsForValue().set("key3","33");

        String s = redisTemplate.opsForValue().get("key");
        System.out.println(s);
        return "";
    }

List类型的执行

@RequestMapping("/testList")
    @ResponseBody
    public String testList(){
        redisTemplate.execute((RedisConnection redisConnection)->{
            redisConnection.serverCommands().flushAll();
            return null;
        });

        redisTemplate.opsForList().leftPush("k","111");
        redisTemplate.opsForList().leftPush("k","222");
        redisTemplate.opsForList().leftPush("k","333");
        String s = redisTemplate.opsForList().rightPop("k");
        System.out.println(s);

        return"";
    }

Hash类型的执行

@RequestMapping("/testHash")
    @ResponseBody
    public String testHash(){
        redisTemplate.execute((RedisConnection redisConnection)->{
           redisConnection.serverCommands().flushAll();
           return null;
        });
        redisTemplate.opsForHash().put("k2","f1","111");
        redisTemplate.opsForHash().put("k2","f2","222");
        redisTemplate.opsForHash().put("k2","f3","333");
        Object o = redisTemplate.opsForHash().get("k2", "f1");
        System.out.println(o);
        Boolean b = redisTemplate.opsForHash().hasKey("k2", "f1");
        System.out.println(b);
        redisTemplate.opsForHash().delete("k2","f3","f1");
        Long k2 = redisTemplate.opsForHash().size("k2");
        System.out.println(k2);


        return null;
    }

Set类型的执行

@RequestMapping("/testSet")
    @ResponseBody
    public String testSet(){
        redisTemplate.execute((RedisConnection redisConnection)->{
            redisConnection.serverCommands().flushAll();
            return null;
        });
        redisTemplate.opsForSet().add("k1","111","222","333");
        Set<String> k1 = redisTemplate.opsForSet().members("k1");
        System.out.println(k1);
        Boolean k11 = redisTemplate.opsForSet().isMember("k1", "111");
        System.out.println(k11);
        Long k12 = redisTemplate.opsForSet().size("k1");
        System.out.println(k12);
        redisTemplate.opsForSet().remove("k1","222");
        Set<String> k13 = redisTemplate.opsForSet().members("k1");
        System.out.println(k13);

        return"";
    }

ZSet类型的执行 

@RequestMapping("/testZSet")
    @ResponseBody
    public String testZSet(){
        redisTemplate.execute((RedisConnection redisConnection)->{
            redisConnection.serverCommands().flushAll();
            return null;
        });

        redisTemplate.opsForZSet().add("k3","zhangsan",11);
        redisTemplate.opsForZSet().add("k3","lsii",22);
        redisTemplate.opsForZSet().add("k3","wangwu",33);
        Set<String> key = redisTemplate.opsForZSet().range("key", 0, -1);
        System.out.println(key);
        Set<ZSetOperations.TypedTuple<String>> k3 = redisTemplate.opsForZSet().rangeWithScores("k3", 0, -1);
        System.out.println(k3);
        Double score = redisTemplate.opsForZSet().score("k3", "zhangsan");
        System.out.println(score);
        Long remove = redisTemplate.opsForZSet().remove("k3", "wangwu");
        System.out.println(remove);
        Long k31 = redisTemplate.opsForZSet().size("k3");
        System.out.println(k31);
        Long rank = redisTemplate.opsForZSet().rank("k3", "zhangsan");
        System.out.println(rank);


        return"";
    }

希望能对大家有所帮助!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值