Redis的基础知识以及实操应用

18 篇文章 0 订阅

一:非关系型数据库

二:Redis支持的数据类型

  1. 字符串类型 string(常用:json/xml)(缓存)
  2. 散列类型 hash(key–value)map
  3. 列表类型 list
  4. 集合类型 set
  5. 有序集合类型 sortedset(排行榜)

三:Redis应用场景
1、缓存(数据查询(高并发以及长时间固定不变的数据),端链接,新闻内容,商品内容等等);–使用最多
2、聊天室的在线好友列表;
3、任务队列;(秒杀,抢购,12306等等)
4、应用排行榜(微波热搜);
5、网站访问统计;
6、数据过期处理(发送验证码);
7、分布式锁

四:window版Redis的安装与使用
1.window版Redis下载官网
2.window版Redis的目录结构
3.window版的Redis是免安装的,将压缩包解压完成即可使用。
4.window版Redis的启动与关闭(服务端)
①:启动:双击redis-server.exe
②:关闭:Ctrl+C 或者 将服务窗口关闭
5.连接Redis服务(客户端)
①:双击redis-cli.exe文件–命令行工具
②:图形化界面工具
6.图形化软件安装(客户端)–后续使用图形化界面操作
①:名称
②:IP
③:端口号

五:Redis的数据结构
1.Redis是一种高级的Key-Value类型的存储系统,其中key值是字符串类型,value值支持5种常用的数据类型。

六:不同数据类型(增删查命令)

七:通用命令的了解

八:Jedis的基本使用–java语言的客户端
1.jedis是官方首选的java客户端开发包(等同于Redis desktop manager图形化界面客户端–操作命令界面)
2.jedis的增删查方法使用
3.java代码demo实现

九:jedis连接池的了解
1.Jedis实例:

public class StudentService {


    StudentDao studentDao = new StudentDao();

    /**
     * 查询所有学员信息
     * @return
     */
    public String queryAllStudent() {
        //先从redis中获取
        Jedis jedis = JedisUtil.getJedis();
        long redisBegin = System.currentTimeMillis();
        String stusData = jedis.get("stusData");
        if(null!=stusData){
            long redisEnd = System.currentTimeMillis();
            System.out.println("从redis中查询耗时:"+(redisEnd-redisBegin));
        }

        //从数据库中查询
        if (null == stusData) {
            long begin = System.currentTimeMillis();
            List<Student> studentList = studentDao.queryAll();
            long end = System.currentTimeMillis();
            System.out.println("从数据库中查询耗时:"+(end-begin));
            //将数据转化成json字符串
            stusData = JSON.toJSONString(studentList);
            //将数据存到redis中
            jedis.set("stusData", stusData);
        }
      
      //释放资源
      jedis.close();
      
        return stusData;
    }
}

十:Spring Data Redis(spring封装的Redis)–以后用这个比较方便相对于Jedis–重要
1.Spring Data 为 Redis 提供了一个工具类:RedisTemplate
2.它的用法3步骤:
①:引入依赖
②:yml或者properties中配置配置参数(ip,端口,连接池参数…)
③:注入RedisTemplate对象,以及对象调用存值和取值的方法
3.RedisTemplate里面封装了对于Redis的五种数据结构的各种操作

  • redisTemplate.opsForValue() :操作字符串

  • redisTemplate.opsForHash() :操作hash

  • redisTemplate.opsForList():操作list

  • redisTemplate.opsForSet():操作set

  • redisTemplate.opsForZSet():操作zset

实例:

public void sendCode(String phone) {
    // 验证手机号格式
    if (!RegexUtils.isPhone(phone)) {
        throw new LyException(ExceptionEnum.INVALID_PHONE_NUMBER);
    }

    // 生成验证码
    String code = RandomStringUtils.randomNumeric(6);

    // 保存验证码到redis
    redisTemplate.opsForValue().set(KEY_PREFIX + phone, code, 1, TimeUnit.MINUTES);

    // 发送RabbitMQ消息到ly-sms
    Map<String, String> msg = new HashMap<>();
    msg.put("phone", phone);
    msg.put("code", code);
    amqpTemplate.convertAndSend(SMS_EXCHANGE_NAME, VERIFY_CODE_KEY, msg);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值