redis快速上手

目录

1、redis安装

1.1、Linux安装redis

1.2、Windows安装redis

1.3、在Linux上启动redis服务

1.4、Windows启动redis

2、redis常用命令

2.1、常用五种数据类型

2.2、字符串类型常用命令

set key value (同key时,覆盖原始key值)

get key

setex key seconds vlaue (表示在seconds秒后清除key值)

setnx key value (只有key不存在时才会生效)

2.3、哈希类型常用命令

hset key field vlaue (设置key中某字段的值)

hget key field (查看key中某字段的值)

hdel key field (删除key中某字段的值)

hvals key (获取key中所有的值)

hgetall key (获取key中所有的字段和值)

2.4、列表类型常用命令

lpush key value1 value2 …… (将一个或多个值插入头部)

lrange key start stop (获取指定范围内的值)

rpop key (移除并获取列表最后一个元素)

llen key (获取列表长度)

brpop key seconds (移除并获取列表最后一个元素,如果列表没有元素则阻塞,知道超时或发现可弹出元素为止)

2.5、集合类型常用命令

sadd key member1 member2 …… (向集合中添加一个或多个成员)

smembers key (返回 集合中的所有成员)

scard key (获取集合的成员数)

sinter key1 key2 …… (返回给定集合的交集)

sunion key1 key2 …… (返回给定集合的并集)

sdiff key1 key2 …… (返回给定集合的差集)

srem key member1 member2 …… (移除一个或多个成员)

2.6、有序集合类型常用命令

zadd key score1 member1 score2 member2 …… (向集合中添加一个或多个成员,或更新存在成员的分数)

zrange key start stop [withscores] (返回范围内的成员并带分数)

zincrby key increment member (向指定成员分数增加increment)

zrem key member1 member2…… (移除一个或多个成员)

2.7、通用命令

keys * (查看所有key)

exsits key (检查key是否存在)

type key (返回key的类型)

ttl key (返回key的剩余生存时间,以秒为单位)

del key (删除指定key)


1、redis安装

1.1、Linux安装redis

  • 在redis官网下载安装包

Linux版下载地址:Index of /releases/

这里下载4.0.0的!

  • 将redis安装包上传至Linux

  • 解压安装包

  • 安装redis的依赖环境gcc

  • 进入redis-4.0.0,进行编译,命令:make

  • 进入redis的src目录,进行安装,命令:make install

安装成功

1.2、Windows安装redis

  • 在github上获取压缩包

Windows下载地址:Releases · microsoftarchive/redis · GitHub

  • 直接解压即可

1.3、在Linux上启动redis服务

  • 修改redis连接密码(修改redis.conf文件)

  • 启动服务(src下的redis-server)

此时处于霸屏状态,终端关闭则服务停止(ctrl+c也可以停止),可以通过修改配置文件解决!!

  • 修该配置文件,在redis解压文件根路径下

  • 重新启动服务

成功启动!!

  • 修改redis配置文件,开启6379端口,并使防火墙立即生效!使得可以远程连接

  • 在Windews上连接虚拟机上redis

1.4、Windows启动redis

直接双击redis-server即可!

修改密码和相关配置参照上面!!

2、redis常用命令

2.1、常用五种数据类型

2.2、字符串类型常用命令

set key value (同key时,覆盖原始key值)

get key

setex key seconds vlaue (表示在seconds秒后清除key值)

setnx key value (只有key不存在时才会生效)

2.3、哈希类型常用命令

hset key field vlaue (设置key中某字段的值)

hget key field (查看key中某字段的值)

hdel key field (删除key中某字段的值)

hvals key (获取key中所有的值)

hgetall key (获取key中所有的字段和值)

2.4、列表类型常用命令

采用队列的形式(后进先出的特点)并且队列中的元素可重复!

lpush key value1 value2 …… (将一个或多个值插入头部)

lrange key start stop (获取指定范围内的值)

rpop key (移除并获取列表最后一个元素)

llen key (获取列表长度)

brpop key seconds (移除并获取列表最后一个元素,如果列表没有元素则阻塞,知道超时或发现可弹出元素为止)

2.5、集合类型常用命令

redis set是String类型的无序集合。集合成员是唯一的!

sadd key member1 member2 …… (向集合中添加一个或多个成员)

smembers key (返回 集合中的所有成员)

scard key (获取集合的成员数)

sinter key1 key2 …… (返回给定集合的交集)

sunion key1 key2 …… (返回给定集合的并集)

sdiff key1 key2 …… (返回给定集合的差集)

srem key member1 member2 …… (移除一个或多个成员)

2.6、有序集合类型常用命令

redis有序集合是String类型的有序集合,且不允许有重复的元素,每个元素关联一个double型的分数,分数可以重复,最后按照从大到小的顺序进行排序!

zadd key score1 member1 score2 member2 …… (向集合中添加一个或多个成员,或更新存在成员的分数)

zrange key start stop [withscores] (返回范围内的成员并带分数)

zincrby key increment member (向指定成员分数增加increment)

zrem key member1 member2…… (移除一个或多个成员)

2.7、通用命令

keys * (查看所有key)

exsits key (检查key是否存在)

type key (返回key的类型)

ttl key (返回key的剩余生存时间,以秒为单位)

del key (删除指定key)

3、Java对redis进行操作

3.1、SpringBoot整合redis

  • 导入依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
  • yml配置

spring:
  redis:
    database: 0 #初始数据库
    #连接IP,localhost为127.0.0.1
    host: localhost
    #端口号
    port: 6379
    #redis连接密码,没有可不写
#    password: root1234
    jedis:
      pool:
        #最大连接数
        max-active: 8
        #最大阻塞等待时间(负数表示没限制)
        max-wait: -1
        #最大空闲
        max-idle: 8
        #最小空闲
        min-idle: 0
        #连接超时时间
        timeout: 10000
  • redis序列化配置类

    @Configuration
    public class RedisConfig extends RedisAutoConfiguration {
    
        /**
         * redis序列化改写
         * @param connectionFactory
         * @return
         */
        @Bean
        public RedisTemplate<Object,Object> redisTemplate(RedisConnectionFactory connectionFactory){
            RedisTemplate<Object,Object> redisTemplate=new RedisTemplate<>();
    
            redisTemplate.setKeySerializer(new StringRedisSerializer());//
            redisTemplate.setHashKeySerializer(new StringRedisSerializer());
    
            redisTemplate.setConnectionFactory(connectionFactory);
            return redisTemplate;
        }
    }

3.2、redis常用命令整合Java

使用前需要先注入RedisTemplate

    @Resource
    private RedisTemplate redisTemplate;

对String数据类型操作

        //存值
        redisTemplate.opsForValue().set("sname","001");//set
        //取值
        String name = (String) redisTemplate.opsForValue().get("sname");//get
        //设置存取时长
        redisTemplate.opsForValue().setIfAbsent("name","002",5, TimeUnit.SECONDS);//setex

对哈希数据类型操作

//获取操作对象
HashOperations hashOperations = redisTemplate.opsForHash();
//存值
hashOperations.put("hash","name","张三");
//取值
String name = hashOperations.get("hash", "name").toString();
//删除某字段
hashOperations.delete("hash","age");//hdel
//获取所有值
List hash = hashOperations.values("hash");//hvals
//获取所有字段
Set hash1 = hashOperations.keys("hash");

对列表数据类型操作

        //获取操作对象
        ListOperations listOperations = redisTemplate.opsForList();

        //存值
        listOperations.leftPush("list","1");//单个加入列表
        listOperations.leftPushAll("list",2,3,4,5);//多个加入列表

        //获取指定范围内的列表值
        List list = listOperations.range("list", 0, -1);
        for (Object o : list) {
            System.out.println(o);
        }

        System.out.println("==============================");
        int size = listOperations.size("list").intValue();//获取列表长度
        for (int i = 0; i < size; i++) {
            Object pop = listOperations.rightPop("list");//移除并获取最后一个元素
            System.out.println(pop);
        }

        //设置阻塞时长的移除数据
        Object timePop = listOperations.rightPop("list", 5, TimeUnit.SECONDS);

对无序集合数据类型操作

        SetOperations setOperations = redisTemplate.opsForSet();

        //存值
        setOperations.add("set",1,2,3,4,5,6);
        //取值
        Set<Integer> set = setOperations.members("set");
        for (Integer integer : set) {
            System.out.println(integer);
        }
        System.out.println("=======================");
        //删除
        setOperations.remove("set",5,6);//删除set中的5,6

对有序集合数据类型操作

        ZSetOperations zSetOperations = redisTemplate.opsForZSet();

        //存值
        zSetOperations.add("Zset","a",0.1);
        zSetOperations.add("Zset","b",5.1);
        zSetOperations.add("Zset","c",1.1);
        zSetOperations.add("Zset","d",0.8);

        //取值
        Set<String> zset = zSetOperations.range("Zset", 0, -1);
        for (String s : zset) {
            System.out.println(s);
        }
        //修改分数
        zSetOperations.incrementScore("Zset","c",20);//将c的分数值增加20
        System.out.println("=============================");
        //删除值
        zSetOperations.remove("Zset","a");//删除a

通用操作

        //查看所有key
        Set<String> keys = redisTemplate.keys("*");
        for (String key : keys) {
            System.out.println(key);
        }
        //检查key是否存在
        Boolean set = redisTemplate.hasKey("set");//存在为true;不存在为false
        System.out.println(set);
        //返回key的数据类型
        DataType dataType = redisTemplate.type("set");
        System.out.println(dataType.name());
        //删除指定key
        redisTemplate.delete("list");

2023-03-06

猜你喜欢

转载自blog.csdn.net/qq_61544409/article/details/129366221
今日推荐