当前位置: 首页 > article >正文

Redis入门

Redis基础

Redis是Key-Value型NoSQL数据库,将数据存储在内存中,同时也能持久化到磁盘,Redis常用于缓存,利用内存的高效提高程序的处理速度。

Redis的特点:

  • 速度快
  • 广泛的语言支持
  • 持久化
  • 多种数据结构
  • 主从复制
  • 分布式与高可用

Redis常用基本配置项:
在这里插入图片描述

./src/redis-server redis.conf 启动redis服务
./src/redis-cli shutdown 关闭redis服务
./src/redis-cli -p 端口号 启动redis客户端,-p指定端口(修改默认端口后连接redis需要加端口)

Redis数据库的名称是一个一个的数字,默认是0-15,一共16个数据库,可在redis.conf文件中修改databases

设置requirepass后,启动客户端后需要输入auth 密码登陆

Redis通用命令:
在这里插入图片描述

Redis常用数据类型:

  • String 字符串类型
  • Hash 键值对类型
  • List 列表类型
  • Set 集合类型
  • Zset 有序集合类型

String 字符串类型
String最大512mb,建议单个不超过100kb

常用字符串命令:
在这里插入图片描述
Hash 键值对类型
Hash类型用于存储结构化数据
在这里插入图片描述
常用Hash命令:
在这里插入图片描述
List 列表类型
List列表就是一系列字符串的“数组”,按插入顺序排序;
List列表最大长度为2的32次方-1,可以包含40亿个元素

List命令:
在这里插入图片描述

lrange list 0 -1 输出列表中的元素

Set 集合类型
Set集合是字符串的无序集合,且集合成员唯一
sadd set1 b c d 往set1中添加元素
smembers set1 查看set1中的元素
sinter set1 set2 交集
sunion set1 set2 并集
sdiff set1 set2 差集,set1中有的,set2中没有的

Zset 集合类型
Zset集合是字符串的有序集合,且集合成员唯一
zadd zset1 99 c 往zset1中添加元素,并设置分数(元素按分数排序)
zrange zset1 0 -1 查看zset1中的元素
zrange zset1 0 -1 withscores 查看zset1中的元素和分数

Java中使用Redis

Jedis:
由Java语言开发的Redis客户端工具,对Redis命令进行了封装,方便上手

添加依赖:

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>5.0.0</version>
</dependency>

连接到redis数据库

//端口为默认端口时,可以不写
Jedis jedis = new Jedis("192.168.77.129",6379);
//选择数据库2
jedis.select(2);      

jedis操作字符串类型:

jedis.set("sn","7788-9900");
String sn = jedis.get("sn");  
//可传入String数组或byte数组
jedis.mset(new String[]{"title","婴幼儿奶粉","num","20"});
List<String> goods = jedis.mget(new String[]{"sn", "title", "num"});         
Long num = jedis.incr("num");

jedis操作Hash类型:

jedis.hset("student:332","name","小明");
String name = jedis.hget("student:332","name");
Map<String,String> hash = new HashMap<>();
hash.put("name","小李");
hash.put("age","18");
jedis.hmset("student:331",hash);

Map<String,String> smap = jedis.hgetAll("student:331");        

jedis操作List类型:

jedis.del("letter");
jedis.rpush("letter",new String[]{"d","e","f"});
jedis.lpush("letter",new String[]{"c","b","a"});
List<String> letter = jedis.lrange("letter",0,-1);
jedis.lpop("letter");
jedis.rpop("letter");
letter = jedis.lrange("letter",0,-1);

利用Redis缓存数据:

public class CacheSample {
    public static void main(String[] args) {
        new CacheSample();
        //将数据从Redis中提取出来
        System.out.println("请输入要查询对商品编号:");
        String goodsId = new Scanner(System.in).next();
        Jedis jedis = new Jedis("192.168.77.129",6379);
        try{
            jedis.select(3);
            String key = "goods:"+goodsId;
            if(jedis.exists(key)){
                String json = jedis.get(key);
                Goods goods = JSON.parseObject(json,Goods.class);
            }else{
                System.out.println("不存在该商品编号");
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            jedis.close();
        }
    }
    public CacheSample(){
        Jedis jedis = new Jedis("192.168.77.129",6379);
         try{
             //将数据存储到redis中
             List<Goods> goodsList = new ArrayList<>();
             goodsList.add(new Goods(8800,"苹果","",3.5f));
             goodsList.add(new Goods(8801,"橙子","",5f));
             goodsList.add(new Goods(8802,"香蕉","",2f));
             jedis.select(3);
             for(Goods goods:goodsList){
                 String json = JSON.toJSONString(goods);
                 String key = "goods:"+goods.getGoodsId();
                 jedis.set(key,json);
             }
         }catch (Exception e){
            e.printStackTrace();
        }finally {
            jedis.close();
        }
    }
}

Redis持久化策略:
Redis持久化策略,将数据持久化到磁盘上,当启动Redis后可以从磁盘将数据加载到内存中,然后在内存中读取数据。
实现Redis持久化策略的方式:
1.RDB(数据快照模式),定期存储,保存的是数据本身,当服务器启动时,可以从RDB文件中恢复数据集。
2.AOF(追加模式),每次修改数据时,同步到硬盘(写操作日志),保存的是数据的变更记录。在服务器重启时,会把所有的写操作重新执行一遍,实现数据备份,当写操作集过大时,Redis会重写写操作集。

zrange和zrangebyscore:
在这里插入图片描述

jedis连接失败时:

  • 解除保护模式:redis.conf文件中,设置protected-mode no
  • 关闭防火墙:systemctl stop firewalld.service

Redis作为内存数据库,读取写入的速度非常快,经常用来存储数据、页面等缓存内容。
Mysql和Redis在处理大量读取数据操作时,一般需要配合使用,如获取大量帖子或新闻,就可以使用Redis将MySQL中的数据获取到,然后直接从Redis中读取数据,效率比较快。


http://www.kler.cn/a/105931.html

相关文章:

  • springboot使用rabbitmq
  • 基于阿里云百炼大模型Sensevoice-1的语音识别与文本保存工具开发
  • PyTorch 快速入门
  • FAST-DDS and ROS2 RQT connect
  • jEasyUI 转换 HTML 表格为数据网格
  • qt内部的特殊技巧【QT】
  • 若依微服务上传图片文件代理配置
  • 找游戏外包开发游戏,有哪些好处呢?
  • 图纸管理制度《四》
  • linux音频-IIS音频接口
  • TimeGPT:时间序列预测的第一个基础模型
  • VSCode:清理ipch缓存
  • vue+Fullcalendar
  • 三、虚拟机的迁移和删除
  • python自动化测试平台开发:自动化测试平台简介
  • 一、高效构建Java应用:Maven入门和进阶
  • GBase8a SSL 配置
  • 【Python机器学习】零基础掌握GradientBoostingClassifier集成学习
  • Go 命令大全:全面解析与实践
  • buuctf_练[MRCTF2020]Ezaudit
  • 正点原子嵌入式linux驱动开发——Linux PWM驱动
  • c++系列之vector类模拟实现
  • 【开题报告】基于微信小程序的旅游攻略分享平台的设计与实现
  • 基于情感分析的网络舆情热点分析系统 计算机竞赛
  • Android底层摸索改BUG(一):Android系统状态栏显示不下Wifi图标
  • 树莓派4b,应用窗口/最小化后在任务栏不显示