Redis企业应用入门看这篇就够了!

目录


一、Redis的简介

1.1 Redis是什么?

Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

1.2 Redis的安装和下载

安装地址:https://github.com/microsoftarchive/redis/tags

redis的目录结构:

 服务器端启动:

 客户端启动:

1.3 Redis的基础命令

命令行模式工具使用

1. 功能性命令:信息添加、信息查询

2. 帮助信息查询 

注意:help [空格][TAB]

 3. 退出命令: quit、exit、Esc键

4. 清屏命令:clear

二、redis的数据类型

Redis的作用:

作为缓存使用:

1. 原始业务功能设计

       秒杀

       618活动

       双11活动

       排队购票

2. 运营平台监控到的突发高频访问数据

       突发时政要闻

3. 高频、复杂的统计数据

       在线人数

系统功能优化或升级:

1. 单服务器升级集群

2. session

3. token

Redis的存储格式:key:value

2.1 String类型

 

 

 

 

 

 总结

redis所有操作都是原子性,采用单线程处理任务业务。

tip1: redis用于控制数据表主键id,为数据库表主键提供生成策略保障数据库表的主键唯一性。支持数据库集群。

 

 tip2: redis控制数据的生命周期,通过数据是否失效控制业务行为。具有时效限定控制。

 tip3: redis应用于各种结构型和非结构型高热度数据访问。

key的设置约定:

2.2 Hash类型

 

 

 

 

 

 购物车模型:

redis存储模型:

 商品编号作为field,购买数量作为value

 添加、浏览、更改数量、删除、清空

 

 

 

 tip4: 应用于购物车数据存储设计。

11抢购活动模型:

tip5: redis应用于抢购,限购类、限量发放、限量发放优惠券、激活码等业务的数据存储设计。

 2.3 list类型

一个存储空间保存多个数据,且通过数据可以体现进入顺序。

 

 

 业务场景:按照点赞需求显示好友信息。取消点赞,移除对应好友信息。

 tip6:redis应用于具有操作先后顺序的数据控制。

业务场景:新闻资讯类网站如何将最新的新闻暗战时间顺序进行展示?

 

 

 

 tip7:  redis应用于最新消息展示。

2.4  set类型

需求:存储大量的数据,在查询方面提供更高效率。

与hash存储结构相同,仅存储键,不存储值,并且值是不允许重复的。

 

业务场景:对信息类别逐渐产生兴趣,增加客户留存度。 

 tip8: redis应用于随机推荐类信息检索。

 

 tip9: redis应用于同类信息的关键搜索,一度关联搜索,深度关联搜索。

案例:依赖set集合hash存储结构特征完成数据过滤和快速查询。

根据用户id获取用户所有角色。

根据用户所有角色获取所有用户操作权限放入set集合。

根据用户所有角色获取用户所有数据全选放入set集合

 tip10: redis应用于同类型不重复数据合并操作。

业务场景:统计网站的访问量

 tip11: redis应用于同类型数据的快速去重。

tip12: redis应用于基于黑名单和白名单设定的服务控制。

2.5 sorted_set类型

需求:数据排序有利于数据的有效展示,需要提供一种可以根据自身特征进行排序的方式。

案例:为所有参与排名的资源建立排序规则。

 tip13: redis应用于计数器组合排序功能对应的排名。

 tip14: redis应用于定时任务执行顺序管理或任务过期管理。

任务/消息权重

 tip15: 应用于即时任务/消息队列执行管理。

2.6 数据类型的案例

业务场景:人工智能的语义识别

 tip16: redis应用于限时按次结算的服务控制。

业务场景:微信接收顺序的展示:

 tip17: redis应用于基于时间顺序的数据操作,而不关注具体时间。

详情学习参照redis的官网

3 redis的通用命令

3.1 key通用指令

 

 

 

 

 3.2 数据库通用指令

 

 

 

 

 4 Jedis简介 

4.1 什么是Jedis?

jedis是java来访问redis数据库的api。

4.2 Jedis快速入门

引入pom依赖:

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>
JedisTest
@Test
public void jedisTest(){
    //1. 连接redis
    Jedis jedis = new Jedis("127.0.0.1", 6379);
    //2. 操作redis
    jedis.set("name", "hello, beauty");
    String name = jedis.get("name");
    System.out.println("=======name========>"+name);
    //3. 释放资源
    jedis.close();
}

测试运行

 4.3 Jedis读写redis数据

@Test
public void listTest(){
    //1. 连接redis
    Jedis jedis = new Jedis("127.0.0.1", 6379);
    //2. 操作redis
    jedis.lpush("name", "zs", "ls");

    List<String> list = jedis.lrange("name", 0, -1);
    System.out.println(list);

    System.out.println(jedis.llen("name"));
    //3. 释放资源
    jedis.close();
}

@Test
public void hashTest(){
    //1. 连接redis
    Jedis jedis = new Jedis("127.0.0.1", 6379);
    //2. 操作redis
    jedis.hset("user", "name", "mr");
    jedis.hset("user", "age", "18");
    jedis.hset("user", "sex", "1");
    Map<String, String> user = jedis.hgetAll("user");
    System.out.println("=====user======>"+user);
    //3. 释放资源
    jedis.close();
}

4.4 Jedis可视化工具

jedis的工具类:

JedisUtils

public class JedisUtils {

    private static JedisPool jp =null;
    private static String host;
    private static int port;
    private static int maxTotal;
    private static int maxIdle;

    static {
        ResourceBundle rb = ResourceBundle.getBundle("redis");
        host = rb.getString("redis.host");
        port = Integer.parseInt(rb.getString("redis.port"));
        maxTotal = Integer.parseInt(rb.getString("redis.maxTotal"));
        maxIdle = Integer.parseInt(rb.getString("redis.maxIdle"));

        JedisPoolConfig jpc = new JedisPoolConfig();
        jpc.setMaxTotal(maxTotal);
        jpc.setMaxIdle(maxIdle);
        jp = new JedisPool(jpc, host, port);
    }

    public static Jedis getJedis(){
        return jp.getResource();
    }

    public static void main(String[] args) {
        JedisUtils.getJedis();
        System.out.println("=======jedis的工具类==========");
    }

}

redis.properties:

redis.host=127.0.0.1
redis.port=6379
redis.maxTotal=30
redis.maxIdle=10

二、基于Linux环境的redis

5. 安装redis

下载安装包

 解压

 进入redis安装目录

 编译安装redis:

 启动redis服务器:

 进入客户端:

补充

安装gcc编译器步骤:

更新软件列表:

 安装gcc命令:

 安装好并验证:

 指定端口启动服务:

 指定配置文件启动服务:

 redis.conf:

 配置文件启动目录管理:

如果你认真阅读到这里相信你对Redis入门有了一定的收获。以上这篇博客是对自己的学习过程的记录,坚持一件事不容易,我们的目标和人民日报站在一起!如果你在看,请坚持点个“在看”,点个“赞”,你个在看你会变好看。后续我给出实际项目结合redis的进阶内容。

如果有小伙伴怕麻烦在这里准备Redis的压缩包,有需要的自取:

链接:https://pan.baidu.com/s/19XIovFM9GNtIlFWdFR-TFg?pwd=2qem 
提取码:2qem

redis可视化工具,需要的自取:

链接:https://pan.baidu.com/s/1sFjJBG3t1N2-UawD6WOgAg?pwd=6c8e 
提取码:6c8e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Husp0707

你的小小点赞、关注是我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值