redis专项练习二redis常用命令以及java调用方式

本文详细介绍了Redis的五大数据类型:String、List、Set、SortSet和Hash,以及对key的相关操作,包括客户端命令行和Java代码调用的方式。内容涵盖了设置、获取、删除、修改等基本操作,以及高级功能如位运算、集合操作和排序集合的处理。
摘要由CSDN通过智能技术生成

目录

 

一、redis的数据类型

二、redis对key的相关操作

   1、redis客户端命令行

2、java代码调用

  三、Redis字符串类型的操作

      1、redis客户端命令行

      2、java代码调用

四、Redis列表list类型的操作

      1、redis客户端命令行

      2、java代码调用

五、Redis的Set类型操作

      1、redis客户端命令行

      2、java代码调用

六、Redis的SortSet类型操作

      1、redis客户端命令行

      2、java代码调用

七、Redis的hash类型操作

      1、redis客户端命令行

      2、java代码调用


一、redis的数据类型

     redis中有五种数据类型分别是String,list,sort.sort set,hash,下面分别对如下的redis的操作提供两种方式,一种是redis客户端操作,一种是使用java调用redis来进行操作。

二、redis对key的相关操作

   1、redis客户端命令行

  • del key1 key2 ... Keyn

作用: 删除1个或多个键

返回值: 不存在的key忽略掉,返回真正删除的key的数量

  • rename key newkey

作用: 给key赋一个新的key名

注:如果newkey已存在,则newkey的原值被覆盖

  • renamenx key newkey  

作用: 把key改名为newkey

返回: 发生修改返回1,未发生修改返回0

注: nx--> not exists, 即, newkey不存在时,作改名动作

  • move key db

将指定的key存放到指定的数据库索引中

(注意: 一个redis进程,打开了不止一个数据库, 默认打开16个数据库,从0到15编号,

如果想打开更多数据库,可以从配置文件修改)


redis 127.0.0.1:6379[1]> select 2

OK

redis 127.0.0.1:6379[2]> keys *

(empty list or set)

redis 127.0.0.1:6379[2]> select 0

OK

redis 127.0.0.1:6379> keys *

1) "name"

2) "cc"

3) "a"

4) "b"

redis 127.0.0.1:6379> move cc 2

(integer) 1

redis 127.0.0.1:6379> select 2

OK

redis 127.0.0.1:6379[2]> keys *

1) "cc"

redis 127.0.0.1:6379[2]> get cc

"3"
  • keys pattern 查询相应的key

在redis里,允许模糊查询key

    有3个通配符 *, ? ,[]

    *: 通配任意多个字符

     ?: 通配单个字符

     []: 通配括号内的某1个字符randomkey 返回随机key


redis 127.0.0.1:6379> flushdb

OK

redis 127.0.0.1:6379> keys *

(empty list or set)

redis 127.0.0.1:6379> mset one 1 two 2 three 3 four 4

OK

redis 127.0.0.1:6379> keys o*

1) "one"

redis 127.0.0.1:6379> key *o

(error) ERR unknown command 'key'

redis 127.0.0.1:6379> keys *o

1) "two"

redis 127.0.0.1:6379> keys ???

1) "one"

2) "two"

redis 127.0.0.1:6379> keys on?

1) "one"

redis 127.0.0.1:6379> set ons yes

OK

redis 127.0.0.1:6379> keys on[eaw]

"one"
  • exists key

判断key是否存在,返回1/0

  • type key

返回key存储的值的类型

有string,link,set,order set, hash

        

2、java代码调用

/**
     * redis有关key的操作
     * RedisTemplate主要支持String,List,Hash,Set,ZSet这几种方式的参数,
     * 其对应的方法分别是opsForValue()、opsForList()、opsForHash()、opsForSet()、opsForZSet()。
     * 下面分别介绍这几个方法的使用。
     */
    @Test
    public void testRedisKey(){

      //获取操作字符串的操作对象
      ValueOperations<String,String> stringOperations = redisTemplate.opsForValue();

        Map<String,String> person = new HashMap<>(5);
        person.put("name","谢奇秀");
        person.put("age","23");
        person.put("birthday","1994-10-21");
        person.put("sex","男");
        stringOperations.multiSet(person);

      //keys  [pattern] 通过通配符获取到匹配的key * 匹配所有字符
        // ?匹配单个字符 [char/chaB/char] 匹配括号中的某个字符
       
      Set<String> keys = redisTemplate.keys("*");
      log.info("redis中*匹配的所有keys;{}", JsonUtil.gsonString(keys));

      keys = redisTemplate.keys("??me");
      log.info("redis中的所有keys;{}", JsonUtil.gsonString(keys));


        keys = redisTemplate.keys("birthda[xy]");
        log.info("redis中的所有keys;{}", JsonUtil.gsonString(keys));

        //删除key del key1 [key2 ...]
        redisTemplate.delete("name");
        List<String> delkeys = new ArrayList<>();
        delkeys.add("age");
        delkeys.add("sex");
        redisTemplate.delete(delkeys);

        keys = redisTemplate.keys("*");
        log.info("redis中*匹配的所有keys;{}", JsonUtil.gsonString(keys));
        

         //rename oldkey newkey 给key赋予一个新的name 如果新的key存在则原来的key值被覆盖
        redisTemplate.rename("name","alias");
        //作用: 把key改名为newkey
        //返回: 发生修改返回true(说明newkey不存在),不发生修改返回false(说明newkey已经存在)
        boolean falg = redisTemplate.renameIfAbsent("name","alias");
        if(falg){
            log.info("修改成功");
        }else{
            log.info("修改失败");
        }

        //move key db 将对应的key存放在 一台redis的服务中默认包含16个库 该行操作将key(默认在0)移动到库索引为2中
        //移动没有发生错误 为false  移动发生错误返回true
        falg = redisTemplate.move("alias",1);
        if(falg){
            log.info("没有移动");
        }else{
            log.info("已经移动");
        }
        Set<String> keys = redisTemplate.keys("*");
        log.info("redis中*匹配的所有keys;{}", JsonUtil.gsonString(keys));


       // 获取一个随机的key
        String randomKey = (String)redisTemplate.randomKey();
        log.info("随机下获取的key:{}",randomKey);

        boolean has = redisTemplate.hasKey("name");
        if(has){
            log.info("存在");
        }else{
            log.info("不存在");
        }

        //获取redis中对应的key的类型
        DataType type = redisTemplate.type("name");
        log.info("redis中对应key的类型为:{}",type.name());

        //设置key的生命周期 
        redisTemplate.expire("age",1000, TimeUnit.MICROSECONDS);

        //查询key的生命周期
        Long expireTime = redisTemplate.getExpire("age");

        log.info("生命周期 -1 表示为持久化 -2表示key不存在 其他的正数为时间单位秒:{}",expireTime);

        //将对应的key持久化
        boolean isExpirst = redisTemplate.persist("age");

    }

  三、Redis字符串类型的操作

      1、redis客户端命令行

  • set key value [ex 秒数] / [px 毫秒数]  [nx] /[xx]

如: set a 1 ex 10 , 10秒有效

Set a 1 px 9000  , 9秒有效

注: 如果ex,px同时写,以后面的有效期为准

如 set a 1 ex 100 px 9000, 实际有效期是9000毫秒

nx: 表示key不存在时,执行操作

xx: 表示key存在时,执行操作

  • mset  multi set
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值