Redis笔记

查询所有key 支持通配符* ?等

语法:keys  patterm    例:keys * 查询所有

删除key 

语法:del key [key.......]  例:del name  删除多个 空格分开 

判断key存在

语法:exists key

有限期后删除key,和查看有效期

语法:explre key time(单位s)

语法:ttl key  返回: -1 永久存在 , -2 已删除


String

添加 key(同名添加=修改)

语法:set key value

语法:mset  key value key value key value 例:mset k1 v1 k2 v2

获取 get

语法:get key

语法:mget keys

自增

语法:incr key

语法:incrby key 步长

语法:incrbyfloat key 步长(浮点数)

新增

语法:setnx key value (不存在key,才新增)

语法:setex key time value  (新增有效期key)


层级化格式

语法:set key:key:key   JSON字符串

例:set sqy:user:1  '{“id":1,"name":"张三"}'

Hash

存取

语法:hset key 字段  value   例:hset sqy:user:3 name sqy

语法:hmset  key 字段  value 字段  value   例: hmset sqy:user:4 name 张三 age 20

语法:hget key 字段  例:hget sqy:user:4 age

语法:hmget key 字段 字段 字段  例:hmget sqy:user:4 name age

语法:hgetall key 例: hgetall sqy:user:3

语法:hsetnx key 字段  value (不存在key,才新增)

获取所有字段和值

语法:hkeys key

语法:hvals key

自增

语法:hincrby key 字段 步长  例:hincrby sqy:user:3 age 2

List(有序、可重复、链式)

插入·移除

语法:lpush/rpush key  arr  例:lpush arr 2 3 4

语法:lpop/rpop key  arr  例:lpush arr 2 3 4

获取多个

语法:lrange key str end  例:lrange arr 0 4

等待获取

语法:blpop key

set(无序、不重复、哈希)

添加、删除

语法:sadd key  value

语法:serm key  value

命令:scard  key  返回元素个数

命令:sismember key value  判断元素死否存在

命令:smembers key 返回所有元素

命令:sintering k1 k2 交集

命令:sdiff  k1 k2 差集

命令:sunion   k1 k2 并集

Java Jedis

pom.xml maven引入

        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>4.2.3</version>
        </dependency>

测试实现

package com.sqy.test;

import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import redis.clients.jedis.Jedis;

import java.util.Map;

public class JedisTest {
    public Jedis jedis;

    @BeforeEach
    void setUp() {
        //连接
        jedis=new Jedis("127.0.0.1",6379);
        //密码
//        jedis.auth("123456");
        //选择库
        jedis.select(0);
    }

    @Test
    void textString(){
        String set = jedis.set("name", "张三");
        System.out.println("存入set"+set);
        String s = jedis.get("name");
        System.out.println("取出数据"+s);
    }
    @Test
    void textHash(){
        jedis.hset("user:1","name","sqy");
        jedis.hset("user:1","age","11");

        Map<String, String> stringStringMap = jedis.hgetAll("user:1");
        System.out.println(stringStringMap);
    }

    @AfterEach
    void tearDown() {
        if(jedis!=null){
            jedis.close();
        }
    }
}

结果

Java Jedis线程池

连接池工具类

package util;

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


public class JedisUtils {

    private static JedisPool pool;
    //静态代码在项目中,如果被使用只会加载一次
    static {
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        //最大连接数
        jedisPoolConfig.setMaxTotal(8);
        //最大空闲连接
        jedisPoolConfig.setMaxIdle(8);
        //最小空闲连接
        jedisPoolConfig.setMinIdle(0);
        //等待时长
        jedisPoolConfig.setMaxWaitMillis(1000);
        //连接池
        pool = new JedisPool(jedisPoolConfig, "centos", 6379, 1000, "123456");


    }
    public static Jedis getRedis() {
//        3:从连接池中获取一个连接
        Jedis jedis = pool.getResource();//获取一个连接
        return jedis;
    }

    public static void close(Jedis jedis) {
        if(jedis!=null){
            jedis.close();
        }
    }
}


Springboot RedisTemplate

maven导入依赖  pom.xml

<!--        //redis-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        
<!--        连接池-->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>

配置连接redis和配置连接池

application.yml

spring:
  data:
    redis:
      host: centos
      port: 6379
      password: 123456
      lettuce:
        pool:
          max-active: 8 #?????
          max-idle: 8 #??????
          min-idle: 0
          max-wait: 1000
server:
  port: 80

测试

package com.sqy.springbootredis;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;

@SpringBootTest
class SpringbootRedisApplicationTests {
    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    void contextLoads() {
        redisTemplate.opsForValue().set("springname","sqyspringboot");

        Object springname = redisTemplate.opsForValue().get("springname");
        System.out.println(springname.toString());
    }

}

结果

序列化

添加Bean/改写key和value

RedisConfig

package com.sqy.springbootredis.config;


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;

@Configuration
public class RedisConfig {
    @Bean
    public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){

        //创建
        RedisTemplate<String, Object> template = new RedisTemplate<>();

        //连接工厂
        template.setConnectionFactory(redisConnectionFactory);

        //Json序列化工具
        GenericJackson2JsonRedisSerializer jsonRedisSerializer =
                new GenericJackson2JsonRedisSerializer();

        //key序列化
        template.setKeySerializer(RedisSerializer.string());
        template.setHashKeySerializer(RedisSerializer.string());

        //value序列化
        template.setValueSerializer(jsonRedisSerializer);
        template.setHashValueSerializer(jsonRedisSerializer);

        //返回
        return template;

    }
}

结果

StringRedisTemplate手动完成对象序列化,解决内存占用(@class)

直接使用

package com.sqy.springbootredis;


import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.sqy.springbootredis.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.StringRedisTemplate;

@SpringBootTest
public class RedisStringTemplate {

    @Autowired
    StringRedisTemplate stringRedisTemplate;
    private static final ObjectMapper objectMapper=new ObjectMapper();


    @Test
    void test(){
        stringRedisTemplate.opsForValue().set("name","张三");

    }

    @Test
    void setUser() throws JsonProcessingException {

        User user1 = new User("张三", 10);
        String s = objectMapper.writeValueAsString(user1);
        stringRedisTemplate.opsForValue().set("user:200",s);

        String s1 = stringRedisTemplate.opsForValue().get("user:200");
        User user = objectMapper.readValue(s1, User.class);
        System.out.println(user.toString());
    }
}

结果

  • 21
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值