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

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

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

当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添加

    <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-pool2</artifactId>
                <version>2.6.0</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-redis</artifactId>
            </dependency>
    
  • 添加实体类

    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<String,String> 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(){
            SetOperations<String,String>setOperations = redisTemplate.opsForSet();
            setOperations.add("myset","hello");
            setOperations.add("myset","world");
            System.out.println(setOperations.members("myset"));
        }
        @Test//有序集合类型
        void redisZSet(){
            ZSetOperations<String,String>zSetOperations = 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(){
            HashOperations<String,String,String>hashOperations = 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());
        }
    }
    
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容