redis使用及5种数据类型

简介

redis (Remote Dictionary Server 远程字典服务)开源使用C语言编写、支持网络、可基于内存亦可持久化日志型、Key-Value数据库;

特点

1、key-value型存储系统,5种数据类型;
2、高性能数据库
3、支持主从同步

5种数据类型

在这里插入图片描述
在这里插入图片描述

  • String字符串类型
    五个命令:get 、 set 、 del 、 incr、 decr 等
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
"world"
127.0.0.1:6379> del hello
(integer) 1
127.0.0.1:6379> get counter
"2"
127.0.0.1:6379> incr counter
(integer) 3
127.0.0.1:6379> incrby counter 100
(integer) 103
127.0.0.1:6379> get counter
"103"
127.0.0.1:6379> decr counter
(integer) 102
127.0.0.1:6379> get counter
"102"
  • Hash(哈希)
    在这里插入图片描述
    命令 hget 、hset、hdel
127.0.0.1:6379> hset user name1 hao
(integer) 1
127.0.0.1:6379> hgetall user
1) "name1"
2) "hao"
127.0.0.1:6379> hget user name1
"hao"
127.0.0.1:6379> hset user name2 xiaohao
(integer) 1
127.0.0.1:6379> hgetall user
1) "name1"
2) "hao"
3) "name2"
4) "xiaohao"

可用于缓存,相比String更节省空间

  • 链表
    List(redis使用双端链表实现List)有序,Value可重复

在这里插入图片描述

127.0.0.1:6379> lpush mylist 1 2 ll ls mem
(integer) 5
127.0.0.1:6379> lrange mylist 0 -1
1) "mem"
2) "ls"
3) "ll"
4) "2"
5) "1"
127.0.0.1:6379>
  • Set集合
    集合类型保存多个字符串,无序,不允许重复元素,不可通过下标获取元素,可取多个集合交并差集

在这里插入图片描述

127.0.0.1:6379> sadd myset hao hao1 xiaohao hao
(integer) 3
127.0.0.1:6379> SMEMBERS myset
1) "xiaohao"
2) "hao1"
3) "hao"
127.0.0.1:6379> SISMEMBER myset hao
(integer) 1

可用于标签、点赞收藏等功能;

  • Zset有序集合
    有序、元素不可重复

在这里插入图片描述

127.0.0.1:6379> zadd myscoreset 100 hao 90 xiaohao
(integer) 2
127.0.0.1:6379> ZRANGE myscoreset 0 -1
1) "xiaohao"
2) "hao"
127.0.0.1:6379> ZSCORE myscoreset hao
"100"

可用于排行榜:排名不可重复,但关注度、字数等可重复;

使用

启动虚机、进入redis根目录、启动redis
在这里插入图片描述

代码:
pom文件导入依赖

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

yml文件配置redis

redis:
    host: 192.168.80.130
    port: 6379
    database: 0 # redis 数据库索引(默认为0)
    jedis:
      pool:
        max-active: 50 # 连接池最大连接数(使用负值标识没有限制)
        max-idle: 20 # 连接池中最大空闲连接
        min-idle: 2 # 连接池中的最小空闲连接

测试类中注入

@Resource
    private RedisTemplate redisTemplate;
@Test
    public void set() {
        redisUtils.set("redis_key", "redis_value");
    }

    @Test
    public void get() {
        String value = redisUtils.get("123");
        System.out.println(value);
    }

@Test
    public void test() {
        TemporaryClassStudentModel temporaryClassStudentModel = null;
        // 根据key值查询返回
        temporaryClassStudentModel = (TemporaryClassStudentModel) redisTemplate.opsForValue().get("123");
        System.out.println(temporaryClassStudentModel);
    }


temporaryClassStudentModel = new TemporaryClassStudentModel();

            // 上课班ID
            String teachClassId = "123";
            temporaryClassStudentModel.setName("123");
            temporaryClassStudentModel.setId("123");
            temporaryClassStudentModel.setKeyText(keyText);
            temporaryClassStudentModel.setTeachClassId("123");
            temporaryClassStudentModel.setCour。。。seId("123");
            temporaryClassStudentModel.setCourseName("123");
            redisTemplate.opsForValue().set(keyText,temporaryClassStudentModel);
            redisTemplate.expire(keyText,2400, TimeUnit.SECONDS);

后续补充完善。。。

发布了166 篇原创文章 · 获赞 47 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/xsh096011/article/details/104349913