0
点赞
收藏
分享

微信扫一扫

【Redis】-常用命令及在Java中操作Redis

有点d伤 2024-06-17 阅读 9

简介

Redis是一个基于内存的key-value结构数据库

特点

基于内存存储,读写性能高

适合存储热点数据(热点商品、咨询、新闻)

企业应用广泛

启动

redis-server.exe redis.windows.conf、

【Redis】-常用命令及在Java中操作Redis_redis

客户端连接

redis-cli.exe -h 地址 -p 端口号 -a 密码 

【Redis】-常用命令及在Java中操作Redis_redis_02

常用数据类型

Redis存储是key-value结构的数据,其中key是字符串类型,value有5中常用数据类型:

字符串string:普通字符串,Redis中最简单的数据类型

哈希hash:也叫散列,类似于Java中的HashMap结构

列表list:按照插入的顺序排序,可以有重复元素,类似于Java中的LinkedList

集合set:无序集合,没有重复元素,类似于Java中的HashSet

有序集合sortedset/zset:集合中每个元素关联一个分数,根据分数升序排序,没有重复元素

【Redis】-常用命令及在Java中操作Redis_redis_03

常用命令

字符串操作命令

SET key value                                    设置指定key的值

GET key                                             获取指定key的值

SETEX key seconds value                    设置指定key的值,并将key的过期时间设为seconds秒

SETNX key value                                 只有在key 不存在时设置key 的值

·

【Redis】-常用命令及在Java中操作Redis_redis_04

哈希操作命令

Redis hash是一个string类型的field和value 的映射表,hash特别适合用于存储对象,常用命令:

HSET key field value                  将哈希表key 中的字段field的值设为value

HGET key field                           获取存储在哈希表中指定字段的值

HDEL key field                           删除存储在哈希表中的指定字段

HKEYS key                                 获取哈希表中所有字段

HVALS key                                 获取哈希表中所有值

【Redis】-常用命令及在Java中操作Redis_Redis_05

【Redis】-常用命令及在Java中操作Redis_redis_06

列表操作命令

Redis列表是简单的字符串列表,按照插入顺序排序,常用命令:

LPUSH key value1 [value2]                           将一个或多个值插入到列表头部

LRANGE key start stop                                 获取列表指定范围内的元素

RPOP key                                                     移除并获取列表最后一个元素

LLEN key                                                      获取列表长度

【Redis】-常用命令及在Java中操作Redis_Redis_07

【Redis】-常用命令及在Java中操作Redis_redis_08

集合操作命令

Redis set是string类型的无序集合。集合成员是唯一的,集合中不能出现重复的数据,常用命令:

SADD key member1 [member2]                                 向集合添加一个或多个成员

SMEMBERS key                                                          返回集合中的所有成员

SCARD key                                                                 获取集合的成员数

SINTER key1 [key2]                                                    返回给定所有集合的交集

sUNION key1 [key2]                                                   返回所有给定集合的并集

SREM key member1 [member2]                                  删除集合中一个或多个成员

【Redis】-常用命令及在Java中操作Redis_redis_09

【Redis】-常用命令及在Java中操作Redis_redis_10

有序集合操作命令

Redis有序集合是string类型元素的集合,且不允许有重复成员。每个元素都会关联一个double类型的分数。常用命令:

ZADD key score1 member1 [score2 member2]         向有序集合添加一个或多个成员

ZRANGE key start stop [WITHSCORES]                    通过索引区间返回有序集合中指定区间内的成员

ZINCRBY key increment member                            有序集合中对指定成员的分数加上增量increment

ZREM key member [member ...]                              移除有序集合中的一个或多个成员

【Redis】-常用命令及在Java中操作Redis_Redis_11

【Redis】-常用命令及在Java中操作Redis_redis_12

通用命令

Redis的通用命令是不分数据类型的,都可以使用的命令:

KEYS pattern                                        查找所有符合给定模式( pattern)的 key

EXISTS key                                           检查给定key是否存在

TYPE key                                              返回key所储存的值的类型

DEL key                                               该命令用于在key存在是删除 key

【Redis】-常用命令及在Java中操作Redis_redis_13

在Java中操作Redis

Redis的Java客户端

redis的java客户端很多,常用的几种:

Jedis

Lettuce

Spring Data Redis

Spring Data Redis是spring 的一部分,对Redis 底层开发包进行了高度封装。在spring项目中,可以使用spring Data Redis来简化操作。


Spring Data Redis使用方式

操作步骤

(1)导入Spring Data Redis的maven坐标

(2)配置Redis数据源

(3)编写配置类,创建RedisTemplate对象

(4)通过RedisTemplate对象操作Redis

【Redis】-常用命令及在Java中操作Redis_Redis_14

【Redis】-常用命令及在Java中操作Redis_Redis_15

【Redis】-常用命令及在Java中操作Redis_Redis_16

【Redis】-常用命令及在Java中操作Redis_Redis_17

字符串操作

/**
 * 操作字符串类型的数据
 */
@Test
public void testString(){
    // set get setex setnx
    redisTemplate.opsForValue().set("city","北京");
    String city = (String)redisTemplate.opsForValue().get("city");
    System.out.println(city);
    redisTemplate.opsForValue().set("code","1234",3, TimeUnit.MINUTES);
    redisTemplate.opsForValue().setIfAbsent("lock","1");
    redisTemplate.opsForValue().setIfAbsent("lock","2");
}

【Redis】-常用命令及在Java中操作Redis_redis_18

哈希操作

/**
 * 操作hash类型的数据
 */
@Test
public void testHash(){
    //hset hget hkeys hvals
    HashOperations hashOperations = redisTemplate.opsForHash();
    hashOperations.put("100","name","tom");
    hashOperations.put("100","age","20");


    String name = (String)hashOperations.get("100","name");
    System.out.println(name);

    Set keys = hashOperations.keys("100");
    System.out.println(keys);

    List values = hashOperations.values("100");
    System.out.println(values);


    hashOperations.delete("100","age");




}

【Redis】-常用命令及在Java中操作Redis_redis_19

列表

/**
 * 操作列表类型数据
 */
@Test
public void testList(){
    //lpush lrange rpop llen
    ListOperations listOperations = redisTemplate.opsForList();

    listOperations.leftPushAll("mylist","a","b","c");
    listOperations.leftPush("mylist","d");

    List mylist = listOperations.range("mylist", 0, -1);
    System.out.println(mylist);

    listOperations.rightPop("mylist");

    Long size = listOperations.size("mylist");
    System.out.println(size);
}

【Redis】-常用命令及在Java中操作Redis_Redis_20

集合操作

/**
     * 集合
     */
    @Test
    public void testSet(){
        //sadd smembers scard sinter sunion srem
        SetOperations setOperations = redisTemplate.opsForSet();

        setOperations.add("set1","a","b","c","d");
        setOperations.add("set2","a","b","x","y");

        Set members = setOperations.members("set1");
        System.out.println(members);

        Long size = setOperations.size("set1");
        System.out.println(size);

        Set intersect = setOperations.intersect("set1", "set2");
        System.out.println(intersect);

        Set union = setOperations.union("set1", "set2");
        System.out.println(union);

        setOperations.remove("set1","a","b");

    }

【Redis】-常用命令及在Java中操作Redis_Redis_21

有序集合

 /**
     * 有序集合
     */
    @Test
    public void testZset(){
        //zadd zrange zincrby zrem
        ZSetOperations zSetOperations = redisTemplate.opsForZSet();

        zSetOperations.add("zset1","a",10);
        zSetOperations.add("zset1","b",12);
        zSetOperations.add("zset1","c",9);

        Set zset1 = zSetOperations.range("zset1", 0, -1);
        System.out.println(zset1);

        zSetOperations.incrementScore("zset1","c",10);

        zSetOperations.remove("zset1","a","b");

    }

【Redis】-常用命令及在Java中操作Redis_Redis_22

通用命令

  /**
     * 通用命令
     */
    @Test
    public void testCommin(){
        //keys exits type del
        Set keys = redisTemplate.keys("*");
        System.out.println(keys);

        Boolean name = redisTemplate.hasKey("name");
        Boolean set1 = redisTemplate.hasKey("set1");

        for(Object key:keys){
            DataType type = redisTemplate.type(key);
            System.out.println(type);
        }
        redisTemplate.delete("mylist");


    }

【Redis】-常用命令及在Java中操作Redis_redis_23


举报

相关推荐

0 条评论