redis的简单操作&&spring boot连接redis

redis的配置文件常用配置项

daemonize yes/no

默认为no,redis不在后台运行,yes,redis在后台运行

pidfile /var/run/redis.pid

redis默认把pid文件放在这儿,可以更改,当运行多个redis服务时需要指定多个pid和端口

port 6379

默认的端口为6379

bind 127.0.0.1

默认只可以本机访问,远程需要进行绑定其他地址

timeout 0

设置客户机连接的超时时间,默认0即关闭该功能

loglevel debug/varbose/notice/warning

  • debug:记录很多信息用于测试和开发

  • varbose: 有用的信息,比debug少

  • notice: 普通的verbose,用于生产环境

  • warning: 只有非常严重才会记录

logfile stdout

默认值标准输出

logfile /var/log/redis/redis.log

配置输出文件

save

指过多少秒且多少次更新后就把数据同步到磁盘文件里

save 100 10100秒内01个key被更改

rdbcompression yes

存储到本地数据时是否压缩,默认yes

dbfilename dump.rdb

默认存储到dump.rdb可更改

requirepass mypassword

修改密码

rename-command CONFIG defined

共享环境下可以重命名一些命令

rename-command CONFIG ""

删除只需要设置为空字符串

maxclients 128

同一时间最大客户连接处

maxmemory

当redis的存储数据的内存

redis-cli内的命令

  • 启动redis服务 redis-server configpath

  • 连接 redis-cli redis-cli -h host -p port -a password

  • 关闭redis redis-cli shutdown save/nosave保存或者不保存,异常关闭数据会丢失

  • redis对key的命令

    • del [...keyname] del a b c删除key,返回值为删除个数
    • dump key序列化
    • exists [...keyname]判断是否存在key返回对应的个数
    • expire key seconds设置key的存活时间
    • ttl keyname查看key的存活时间-1为永久 -2过期 非负数代表剩余存活时间
    • pexpire key mileseconds以毫秒记过期时间
    • pttl keyname以毫秒返回key的剩余时间
    • persist key移除key的过期时间
    • keys partten通过pattern正则查询符合的key
    • rename oldkeyname new keyname重命名key
    • move keyname dbnumber 将key移动到另一个数据库中,配置文件可以更改数据库的数量,默认有16个从0开始,刚登录到数据库内是在0这个库中,同时keyname支持表达式进行多个同时转移
    • type keyname返回值的类型
    • set keyname keyvalue设置key,如果keyname重复那么值覆盖
    • get keyname获取这个key的值
    • setnx keyname在key不存在时才会设置
    • getrange keyname start end截取字符串下标从0开始
    • strlen keyname获取长度
    • incr keyname使一个key自增一如果不存在则创建
    • incrby keyname num自增设定的个长度
    • decr keyname自减一个长度
    • decrby keyname len自增设定的长度
    • append keyname value在尾部拼接字符串
  • hash操作

    • hset keyname name xiaoming keyname name重复就会覆盖
    • hget keyname name
    • hmset keyname name1 value1 name2 value 2一次性设置多个值
    • hmget keyname name1 name2一次性获取多个值
    • hgetall keyname获取所有的值
    • hkeys keyname获取所有的字段
    • hlen keyname获取有多少个字段
    • hdel keyname fieldname删除一个字段
  • list操作

    • Lpush keyname value1 value2... 从列表左边插入
    • rpush keyname value1 value2...从列表右边插入
    • blpop list1 list2 timeoutseconds相当于返回第一个素,如果list1有值返回list1第一个,如果没有list2返回第一个
    • brpop list1 list2 timeoutseconds相当于返回最后一个素,如果list2有值返回list2最后一个,如果没有list1返回最后一个
    • lindex keyname index按照下标查询元素不移除
    • llen keyname获取list长度
    • lrange keyname start end截取元素
    • lset keyname index value修改某个下标的值
    • ltrim keyname start end删除列表内的元素
  • set操作

    • sadd keyname value1 value2添加元素不可重复
    • scard keyname获取set的成员数
    • sdiff keyname1 [keyname2]返回集合的差集
    • sdiffstore storename keyname1 [keyname2]返回keyname1和keyname2的差集存储到storename中
    • sinner keyname1 [keyname2]返回交集
    • sismember keyname member判断member是否在可以那么集合中
    • smembers keyname返回集合
    • srem keyname member1 member2...移除一个或多个元素
    • sunion keyname1 [keyname2]返回并集
  • redis支持5种数据类型

    • string字符串
    • hash哈希
    • list列表
    • set集合
    • zset有序集

spring boot配置redis

  • pom.xml添加

    
                org.apache.commons
                commons-pool2
                2.6.0
            
            
                org.springframework.boot
                spring-boot-starter-data-redis
            
    
  • 添加实体类

    package com.store.store.cache;
    
    import lombok.Data;
    import org.springframework.stereotype.Component;
    
    import java.io.Serializable;
    @Component
    @Data
    public class User implements Serializable {
        private String userName;
        private Integer userId;
        private String sessionId;
    }
    
    
  • yml配置文件

    spring:
      redis:
        host: localhost
        port: 6379
        password: 123456
        lettuce:
          pool:
            max-active: 8
            max-wait: -1
            max-idle: 8
            min-idle: 0
    
  • 测试类

    @SpringBootTest
    class StoreApplicationTests {
        @Autowired
        RedisTemplate redisTemplate;
        @Autowired
        User user;
        @Test
        void contextLoads() {
    
        }
        @Test//普通string类型
        void redisTestSet(){
            user.setUserId(1);
            user.setUserName("zy");
            user.setSessionId("2312");
            redisTemplate.opsForValue().set("robber",user);
        }
        @Test
        void redisTestGet(){
            System.out.println(redisTemplate.opsForValue().get("robber"));
        }
        @Test
        void redisDel(){
            redisTemplate.delete("robber");
        }
        @Test
        void redisString(){
            redisTemplate.opsForValue().set("str","hello world");
        }
        @Test//list类型
        void redisList(){
            ListOperations listOperations = redisTemplate.opsForList();
            listOperations.leftPush("mylist","first");
            listOperations.rightPush("mylist","second");
            listOperations.leftPop("mylist");
            listOperations.rightPop("mylist");
            System.out.println(listOperations.range("mylist",0,1));//截取下标为0开始
        }
        @Test//set类型
        void redisSet(){
            SetOperationssetOperations = redisTemplate.opsForSet();
            setOperations.add("myset","hello");
            setOperations.add("myset","world");
            System.out.println(setOperations.members("myset"));
        }
        @Test//有序集合类型
        void redisZSet(){
            ZSetOperationszSetOperations = redisTemplate.opsForZSet();
            zSetOperations.add("myzset","helloa",1);
            zSetOperations.add("myzset","hellob",2);
            zSetOperations.add("myzset","helloc",3);
            zSetOperations.add("myzset","hellod",0);
            System.out.println(zSetOperations.range("myzset",0,8));
            System.out.println(zSetOperations.zCard("myzset"));
        }
        @Test//哈希类型
        void redisHash(){
            HashOperationshashOperations = redisTemplate.opsForHash();
            //hashOperations.put("myhash","name","zy");
            System.out.println(hashOperations.get("myhash","name"));
        }
        @Test//切换数据库
        void showDataBase(){
           LettuceConnectionFactory lettuceConnectionFactory = (LettuceConnectionFactory) redisTemplate.getConnectionFactory();
           lettuceConnectionFactory.setDatabase(13);
            System.out.println(lettuceConnectionFactory.getDatabase());
        }
    }
    
    

你可能感兴趣的:(redis的简单操作&&spring boot连接redis)