跳到主要内容

Redis入门小知识

·1446 字·3 分钟

一些有用的链接🔗 #

Redis - 菜鸟教程

Redis Command Doc

常用基础命令语法 #

通过命令help官网Doc可查询所有命令的帮助

通用 Key 命令 #

命令名语法功能说明
DELDEL key [key ...]删除一个或多个键
EXISTSEXISTS key检查键是否存在
EXPIREEXPIRE key seconds设置键的过期时间(秒)
TTLTTL key查看键的剩余生存时间(秒)
KEYSKEYS pattern匹配符合模式的键(生产环境慎用)
TYPETYPE key获取键存储的数据类型
SCANSCAN cursor [...]遍历对应数据库的所有键
RENAMERENAME key newkey重命名键

查看更多

字符串 String #

命令名语法功能说明
SET`SET key value [NXXX]`
SETEXSETEX key seconds value设置会过期时间的键值对
MSETMSET key1 value1 key2 value2批量设置键值对
GETGET key获取键的值
`INCRDECR``INCR
`INCRBYDECRBY``INCRBY
APPENDAPPEND key value向字符串尾部追加内容
STRLENSTRLEN key获取字符串长度

查看更多

哈希 Hash #

命令名语法功能说明
HSETHSET key field value设置哈希的字段值
HGETHGET key field获取哈希的字段值
`HGETALLHVALS``HGETALL
HSCANHSCAN key cursor [...]遍历哈希的字段和值
HDELHDEL key field [field ...]删除哈希的一个或多个字段
HINCRBYHINCRBY key field increment对哈希字段的整数值增加指定数值
HEXISTSHEXISTS key field检查哈希字段是否存在

设置过期时间、自增、字段长度、更多

列表 List #

命令名语法功能说明
`LPUSHRPUS``LPUSH
`LPOPRPOP``LPOP
LINDEXLINDEX key index通过索引获取元素
LSETLSET key index element通过索引设置元素
LINSERT`LINSERT key <BEFOREAFTER> pivot element`
LRANGELRANGE key start stop获取列表指定索引范围的元素(0到-1表示全部)
LTRIMLTRIM key start stop修剪列表保留索引区间
LLENLLEN key获取列表长度

查看更多

集合 Set #

命令名语法功能说明
SADDSADD key member [member ...]向集合添加一个或多个元素(自动去重)
SISMEMBERSISMEMBER key member检查元素是否属于集合
`SMEMBERSSCARD``SMEMBERS
SREMSREM key member [member ...]从集合删除一个或多个元素
SSCANSSCAN key cursor [MATCH pattern] [COUNT count]遍历集合的成语
SDIFFSDIFF key [key ...]求多个集合的差集
SINTERSINTER key1 key2 [key ...]求多个集合的交集
SUNIONSUNION key1 key2 [key ...]求多个集合的并集

查看更多

有序集合 Sorted Set #

命令名语法功能说明
ZADDZADD key score member向有序集合添加元素
`ZRANGEZREVRANGE``ZRANGE
ZINCRBYZINCRBY key increment member [...]增加元素的分值
`ZRANKZREVRANK``ZRANK
ZSCOREZSCORE key member获取元素分数
ZSCANZSCAN key cursor ...遍历有序集合元素

查看更多

Java 客户端 #

jedis #

官网地址:https://github.com/redis/jedis
maven仓库:https://mvnrepository.com/artifact/redis.clients/jedis
测试代码:

@Test
    void jedisPool() {//jedis连接池
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        poolConfig.setMaxTotal(128); // 最大连接数
        poolConfig.setMaxIdle(32);   // 最大空闲连接
        poolConfig.setMinIdle(0);

        try (JedisPool jedisPool = new JedisPool(poolConfig, "localhost", 6379, 1000)/*创建连接池*/) {
            try (Jedis jedis = jedisPool.getResource()) {
                ScanResult<String> scanResult = jedis.scan("0", new ScanParams().count(10));
                System.out.println(scanResult.getResult());
                String REDIS_KEY = "user";
                Gson gson = new Gson();
                UserInfo userInfo = new UserInfo("焕昭君", 18);
                jedis.select(0);
                jedis.set(REDIS_KEY, gson.toJson(userInfo));
                UserInfo getUserInfoFromRedis = gson.fromJson(jedis.get(REDIS_KEY),UserInfo.class);
                System.out.println("get:" + getUserInfoFromRedis);
                System.out.println("exists:" + jedis.exists(REDIS_KEY));
                System.out.println("del:" + jedis.del(REDIS_KEY));
                System.out.println("get:" + jedis.get(REDIS_KEY));
            }
        }
    }

    @Test
    void jedisPing() {
        try (Jedis jedis = new Jedis("localhost", 6379)) {//构造对象
            //jedis.auth("");//密码校验
            System.out.println(jedis.ping());//测试连接
            //System.out.println(jedis.info());
            assertEquals("PONG", jedis.ping());
        }
    }

    class UserInfo {
        private String name;
        private int age;

        public UserInfo(String name, int age) {
            this.name = name;
            this.age = age;
        }

        @Override
        public String toString() {
            return "UserInfo{" +
                    "name='" + name + '\'' +
                    ", age=" + age +
                    '}';
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }

        @Override
        public boolean equals(Object o) {
            if (!(o instanceof UserInfo userInfo)) return false;
            return age == userInfo.age && Objects.equals(name, userInfo.name);
        }

        @Override
        public int hashCode() {
            return Objects.hash(name, age);
        }
    }

SpringDataRedis #

配置对应的依赖

		<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>

对应的配置文件

spring:
  data:
    redis:
      host: localhost  # Redis 服务器地址
      port: 6379       # Redis 服务器端口
      password:        # Redis 密码,如果没有密码可以留空
      database: 0      # Redis 数据库索引,默认为 0
      timeout: 2000    # 连接超时时间,单位为毫秒
      lettuce:
        pool:
          max-active: 8   # 连接池中最大活跃连接数
          max-idle: 8     # 连接池中最大空闲连接数
          min-idle: 0     # 连接池中最小空闲连接数
          max-wait: 1000ms
焕昭君
作者
焕昭君
知行合一,日拱一卒