Redis Stack 的基本介绍

Redis Stack 安装部署 -v /path/to/data:/data/redis_data :将主机上的指定目录挂载为容器内的/data目录,用于持久化数据(根据实际情况调整路径)# -p 6379:6379:将主机的6379端口映射到容器的6379端口,供Redis Stack服务器使用。# -p 6379:6379:将主机的6379端口映射到容器的6379端口,供Redis Stack服务器使用。# --name my-redis-stack-server:为容器指定一个名称。此容器更适合生产环境部署。 阅读详情
AI摘要

Redis-Stack 是 Redis 公司推出的增强版发行版,集成了 Redis 核心服务器、官方模块及管理工具。它提供了 JSON 支持、全文搜索、时间序列处理、图数据库等功能,适用于多种复杂应用场景。相比普通 Redis,Redis-Stack 开箱即用,简化了架构和运维,并提升了开发效率。

Redis-Stack 并不是 Redis 的一个替代品,而是 Redis 公司(原 Redis Labs)官方推出的一个“增强版 Redis 发行版”或“集成套件”。它的核心思想是将 Redis 核心服务器与一系列强大的、官方维护的开源模块以及管理工具打包在一起,提供开箱即用的高级数据处理能力。

简单来说:Redis-Stack = Redis 核心服务器 + 关键官方模块 + RedisInsight 管理工具

除此之外:Redis-Stack-Server = Redis 核心服务器 + 关键官方模块

也就是说:Redis-Stack = Redis-Stack-Server + RedisInsight

它是什么?核心组成

  1. Redis 核心服务器: 这是基础,提供高性能的内存数据存储、缓存、消息队列等核心功能。Redis-Stack 使用的是最新的、稳定的开源 Redis 版本。
  2. 关键官方模块 (Bundled Modules): 这是 Redis-Stack 的灵魂所在。它预装并集成了以下由 Redis 公司开发和维护的核心模块:
    • RedisJSON: 提供对 JSON 文档的原生支持。你可以直接在 Redis 中存储、操作(增删改查)、查询 JSON 对象,就像操作原生数据类型一样高效。作用: 消除应用层解析 JSON 的开销,简化处理嵌套数据结构的代码。
    • RediSearch: 一个强大的全文搜索引擎和二级索引引擎。它支持复杂的文本搜索(词干提取、模糊匹配、地理空间搜索等)、聚合查询、以及为 Hash 和 JSON 数据创建高效索引。作用: 在 Redis 内实现高性能、低延迟的搜索功能,无需引入外部搜索引擎(如 Elasticsearch/Solr)。
    • RedisTimeSeries: 专为时间序列数据优化的模块。高效存储和查询带时间戳的数据点(如监控指标、IoT 传感器数据),支持降采样、范围查询、聚合计算等。作用: 处理高频时间序列数据,性能远超用普通数据结构模拟。
    • RedisGraph: 一个基于图论的图数据库模块。使用 Property Graph 模型存储节点、关系和属性,支持使用 Cypher 查询语言进行复杂的关系遍历和分析。作用: 处理社交网络、欺诈检测、推荐系统等需要深度关系查询的场景。
    • RedisBloom: 提供概率性数据结构,如布隆过滤器、Cuckoo 过滤器、Top-K、Count-Min Sketch。作用: 高效解决“元素是否可能在集合中”(防缓存击穿)、“高频项统计”、“基数估算”等问题,占用空间极小。
  3. RedisInsight: 一个功能强大的官方 GUI 管理和分析工具。它深度集成到 Redis-Stack 中(通常作为 Docker 容器的一部分或独立安装),提供:
    • 直观的键空间浏览和管理
    • 实时性能监控和诊断
    • 可视化查询构建器(特别是对 RediSearch, RedisJSON, RedisGraph 非常有用)
    • 数据导入/导出
    • CLI 控制台
    • 模块特定的功能界面(如查看时间序列图表、图数据库可视化)

Redis-Stack 的核心作用

  1. 开箱即用的高级功能: 最大的价值在于省去了单独寻找、编译、配置、维护这些复杂模块的麻烦。 你下载安装 Redis-Stack,这些强大的功能(搜索、JSON、时序、图)就 ready-to-go,无需额外步骤。
  2. 统一平台,简化架构: 过去,如果你需要缓存 + 搜索 + 时序数据,可能需要部署 Redis + Elasticsearch + InfluxDB 等多个系统,带来运维复杂度和数据同步问题。Redis-Stack 允许你在一个统一的、高性能的 Redis 平台上完成这些任务,显著简化技术栈和运维负担。
  3. 深度集成,性能优化: 这些模块与 Redis 核心深度集成,共享内存管理、网络层、持久化机制等,避免了跨进程/跨服务调用的开销,性能通常优于独立部署的同类解决方案。
  4. 提升开发效率: RedisInsight 提供了强大的可视化工具,特别是对于构建复杂的搜索查询、JSON 路径操作、图遍历等,大大降低了开发和调试的难度。
  5. 官方支持与保障: 作为 Redis 公司的官方发行版,这些模块经过严格测试、版本匹配,获得官方的技术支持和更新保障,比使用社区维护的模块更可靠。

Redis-Stack 的典型使用场景

Redis-Stack 的价值在于当你不仅需要 Redis 的基础缓存/存储能力,还需要在其上直接构建更复杂的数据处理和查询逻辑时。常见场景包括:

  1. 需要实时、高性能搜索的应用:

    • 电商: 商品名称、描述、属性的即时搜索(支持模糊匹配、拼写纠错、过滤)。
    • 内容平台: 博客、新闻、文档的全文搜索。
    • 用户目录: 快速搜索用户资料信息。
    • 场景优势: 搜索结果与缓存数据(如商品详情)可以原子性地一起获取,避免缓存与搜索引擎数据不一致的问题,延迟极低。
  2. 大量使用 JSON 数据的应用:

    • API 后端: 存储和操作 RESTful API 的请求/响应体(本身就是 JSON)。
    • 会话存储: 存储包含复杂用户状态的会话数据。
    • 配置中心: 存储层次化的配置信息。
    • 场景优势: 无需在应用层序列化/反序列化 JSON,可直接用 JSON.GET, JSON.SET, JSON.PATH 操作 JSON 的特定字段,效率更高,代码更简洁。
  3. 处理时间序列数据:

    • 监控与告警: 应用性能指标 (APM)、服务器/容器监控指标、网络监控。
    • IoT: 传感器数据流(温度、湿度、位置等)。
    • 金融: 实时行情、交易流水。
    • 场景优势: RedisTimeSeries 专为高频写入和高效范围聚合查询设计,内存占用优化,查询速度极快,远优于用 Sorted Set 模拟。
  4. 涉及复杂关系查询的应用:

    • 社交网络: “好友的好友”、共同兴趣推荐。
    • 欺诈检测: 分析交易路径、关联账户。
    • 知识图谱: 构建和查询实体间的关系。
    • 场景优势: 使用 Cypher 语言进行直观的关系遍历,性能对于中等规模图非常出色,避免了关系型数据库 JOIN 的性能瓶颈。
  5. 需要概率性数据结构的场景:

    • 防缓存击穿: 用布隆过滤器快速判断一个绝对不存在的 key(防止大量请求压垮数据库)。
    • 实时数据分析: 估算独立用户数 (UV)、找出访问量 Top N 的页面/商品。
    • 场景优势: 以极小的内存开销解决特定的大数据量问题。
  6. 希望简化运维、统一技术栈的团队: 当你的应用同时有缓存、搜索、时序等需求时,部署和管理一个 Redis-Stack 实例比维护多个独立数据库(Redis + ES + TSDB)要简单得多,降低了运维复杂度和成本。

与“普通 Redis”的关键区别

  • 普通 Redis: 只包含核心数据结构(String, Hash, List, Set, Sorted Set, Stream)和基础功能。要使用 JSON、搜索、时序等功能,你需要手动下载、编译、配置相应的模块(如果存在社区版),过程可能繁琐且版本兼容性需自行验证。
  • Redis-Stack: 预集成了上述关键模块和管理工具,安装即用。它完全兼容原生 Redis 协议和 API,你的现有缓存代码无需修改就能运行在 Redis-Stack 上。你只是额外获得了使用这些高级模块的能力。

总结

Redis-Stack 是 Redis 公司为解决现代应用对超越简单键值缓存的需求而打造的“一站式”增强平台。它将 Redis 从一个卓越的缓存/消息中间件,扩展为一个能够处理搜索、JSON 文档、时间序列、图数据等复杂工作负载的多功能数据平台。

何时考虑使用 Redis-Stack?

  • 你的项目已经使用 Redis 做缓存。
  • 你额外需要实现高性能搜索、高效处理 JSON、存储查询时间序列数据或进行图关系分析。
  • 你希望避免引入多个独立的数据库系统,简化架构和运维。
  • 你追求更低的查询延迟(因为数据和处理逻辑在同一个内存空间内)。
  • 你需要官方支持和开箱即用的体验。

如果你只需要简单的缓存功能,标准的 Redis 服务器就完全足够了。但如果你的应用场景变得复杂,需要 Redis 核心之外的能力,Redis-Stack 提供了一个非常强大、集成度高且易于使用的解决方案,值得认真考虑。它代表了 Redis 从“缓存”向“多功能实时数据平台”演进的重要方向。

Redis7系列:Redis对决RedisStack Redis 是一个开源的内存数据库,以高性能、低延迟著称,支持基础数据结构(如字符串、哈希、列表、集合、有序集合等),常用于缓存、消息队列、实时数据处理等场景。Redis Stack 是 Redis 的扩展版本,整合了 Redis 核心数据库与多个高级功能模块(如全文搜索、JSON 文档存储、图数据库、时间序列等),提供“一站式”解决方案,简化了复杂数据场景的开发。 阅读详情

相关推荐

【AI-安装指南】Redis Stack 的安装与使用

传统的 Redis 服务是不能存储向量的,因此我们需要首先安装 Redis Stack,而 Windows 电脑安 装 Redis Stack,官方只提供了 Docker 的安装方式,因此我们需要先按照 Docker,再在 Docker 上安装 Redis Stack。Redis Stack 是一个由 Redis 官方提供的软件套件,旨在简化开发人员对 Redis 模块的使用体验, 并增强 Redis 的功能。​Redis Stack 不是 Redis 的替代品,而是扩展其能力的工具。

大家好,我是敖云岚,一个沉迷代码的 “技术玩家”。擅长 Java、C++ 开发,对 MySQL、Redis、RabbitMQ 等技术也颇有研究。博客里既有硬核技术干货,也有诙谐幽默的编程日常分享。愿和你一起,笑着学技术,快乐敲代码! 2375

Redis Stack是什么,你知道吗?

Redis Stack 是使用 Redis 的最佳起点。我们将我们必须提供的最好的技术捆绑在一起,形成一个易于使用的软件包。Redis Stack 扩展了 Redis OSS 的核心功能,并为调试等提供了完整的开发人员体验。可以看到Redis 是我们非常熟悉的内存键值对数据库,它有着丰富的数据结构,能够满足我们平时的绝大部分数据存储要求。然而,有些时候我们还希望可以对搜索,文档,图形,时间序列等进行数据建模,这个时候我们就可以使用 Redis Stack。Redis Stack是Redis的扩展。

Hanko的专栏 2900

别再搞混了!Docker部署Redis Stack时,选redis/redis-stack还是redis/redis-stack-server?

本文详细解析了Docker部署Redis Stack时如何选择redis/redis-stack和redis/redis-stack-server镜像,帮助开发者根据开发与生产环境需求做出最佳决策。通过对比核心差异、技术参数和场景化部署方案,提供性能优化与安全实践建议,确保Redis Stack的高效安全运行。

weixin_29302047的博客 463

Redis基础(笔记)

redis基本操作笔记

weixin_46949627的博客 2983

Redis-Stack 与 Redis-Stack-Server:从概念到部署的实战避坑指南

本文深入解析了Redis-Stack与Redis-Stack-Server的核心区别与应用场景。Redis-Stack是集成了RedisInsight图形管理工具的完整开发套件,适合快速上手与调试;而Redis-Stack-Server则是专注于核心数据服务的纯净运行时,更适用于追求安全、稳定与性能的生产环境部署。文章提供了从开发到生产的实战部署指南与经典避坑建议。

bb456的博客 676

Redis Stack扩展功能

比如在分布式场景下做用户登录功能,我们就可以将用户信息以JSON字符串的形式保存到Redis中,来代替单体应用中的Session,从而实现统一的登录状态管理。桶Busket中并不实际保存数据本身,而是保存数据的指纹(可以认为是压缩后的数据,实际上是数据对象的几个低位数据)。这样就极大的减少了数据迁移带来的麻烦。通常使用的 keys * 这样的指令,在生产环境一般都是直接禁用的,因为这样会产生严重的线程阻塞,影响其他的读写操作。所以,在布隆过滤器的初始化过程中,通常只需要指定过滤器的容量和误判率,就足够了。

IAtlantiscsdn的博客 1695

15、Redis Stack扩展功能实战

⼆申请RedisCloud实例⼀、了解Redis产品⽬前,在Redis的官⽹上,可以看到Redis已经包含了多个产品。其中,是Redis的云服务,RedisInsight是Redis官⽅推出的图形化客户端。解决了Redis客户端群龙⽆⾸的囧境。⽽Redis本身,也已经划分成了⼏个版本。Redis OSS就是我们之前⽤的Redis。RedisStack可以理解为是Redis加上—系列的扩展产品。Redis。

srrsheng的博客 2236

别再傻傻分不清了!Redis-Stack和Redis-Stack-Server,Docker部署时到底该用哪个镜像?

本文详细解析了Redis-Stack和Redis-Stack-Server两个Docker镜像的核心区别与应用场景。Redis-Stack适合开发环境,包含RedisInsight等全套工具;而Redis-Stack-Server则是精简版,更适合生产部署,资源占用更低且更安全。文章提供了从开发到生产的最佳实践方案,帮助用户根据需求选择合适镜像。

weixin_30342209的博客 260

Redis-Stack 与 Redis-Stack-Server:核心区别与选择指南

本文提供了Spring Boot 3集成Redis高可用方案的完整实现指南,包含两种模式:Sentinel哨兵模式和Cluster集群模式。文章详细说明了项目结构、Maven依赖配置、YAML配置文件、Redis配置类实现(支持自定义序列化)、服务层代码示例以及测试方法。其中,Sentinel模式通过Lettuce客户端自动连接哨兵集群,无需手动指定主节点;Cluster模式则通过配置节点列表实现自动拓扑发现。两种方案均采用Jackson进行JSON序列化,保留了类型信息,并包含连接池优化配置。适用于Spr

python15397的博客 1513

MBIST --- PATR1.Memorybist测试原理

mem bist作为现在design设计中不可或缺的DFT设计内容,越发重要。本章节主要介绍mem bist组成部分,测试的原理以及注意事项。

sinat_27691203的博客 1万+

TikTok Shop API密钥获取与PHP实战对接指南

本文详细介绍了TikTok Shop API密钥的获取流程与PHP实战对接方法。从开发者后台创建应用、获取核心的API密钥开始,逐步解析OAuth 2.0授权机制,并提供了完整的PHP封装类示例,涵盖签名生成、API调用、令牌刷新及错误处理,帮助开发者快速实现与TikTok Shop的数据对接与自动化操作。

weixin_29300241的博客 400

【Docker】docker compose 安装 Redis Stack

这篇文章介绍如何使用 docker compose 安装 redis stack。Redis Stack 是增强版的 Redis ,它在传统的 Redis 数据库基础上增加了一些高级功能和模块以支持更多的使用场景和需求。比如现在火热的AI,Redis 可以作为向量库来使用,通过 RediSearch 来进行相似性查找。

herogus的博客 4233

利用netmq在相机应用于unity之间传输图像数据

Unity工业相机接入方案解析 本文探讨了在Unity中接入不同品牌工业相机的技术方案。研究发现: Basler相机可直接调用官方DLL(pylonc.net.dll)实现接入 海康和大恒相机因驱动DLL依赖C++组件,无法直接调用 解决方案:通过独立进程(相机应用程序)与Unity进行通信,采用NetMQ实现图像数据传输 技术实现要点: 相机端:使用PublisherSocket发布JPEG图像帧 Unity端:通过SubscriberSocket订阅图像数据 优化:设置高水位线控制缓存帧数,避免数据堆积

weixin_46450859的博客 417

redis-stack安装

【代码】redis-stack安装。

sky学linux的博客 384

银河麒麟V10离线升级OpenSSH实战:从编译到回滚全流程

OpenSSH作为Linux系统远程登录的核心组件,其版本升级直接关系到系统安全与等保合规。在信创环境下,银河麒麟V10自带的OpenSSH版本往往无法满足漏洞扫描与安全加固要求,而离线编译升级涉及依赖处理、编译参数、服务替换与回滚方案等多个技术环节。本文围绕银河麒麟V10(x86_64)平台,详细讲解OpenSSH离线升级的完整实操流程,包括环境摸底、依赖包安装、源码编译、配置文件兼容性处理、服务重启验证以及常见问题排查,并分享批量升级与安全加固的工程经验,帮助运维人员在不断网、不重装的前提下一次成功完成

weixin_30582943的博客 383

Origin教程004:Origin图形导出

需要编辑的话,双击图形,会自动用origin软件打开图形,这种方式是最开始导出图形的功能,方式一和二都是后面增加的。如果导出的图片边距较大的时候,会影响图片的美观,可以通过。也可以设置在PPT中直接编辑,找到。解决方法是,选择一条线,

WwLK123的博客 6327

CentOS7 安装 Redis Stack

Redis Stack 是 Redis 的增强版本,集成了 RedisJSON、RediSearch、RedisTimeSeries 等多个模块,并提供 RedisInsight 可视化工具。

流放深圳 467

写给开发人员的实用密码学 - Hash算法

说到Hash(哈希),开发人员应该不陌生,比如Hash表是一种非常常用的数据结构,通过Hash表能够根据键值快速找到数据。哈希函数将文本(或其他数据)映射为整数,从而能够提高检索效率。密...

云水木石 1503

docker-compose 之 redis-stack

‌Redis和Redis Stack的主要区别在于功能和适用场景‌‌功能差异‌:Redis是一个开源的内存数据结构存储系统,主要用作数据库、缓存和消息代理,支持多种数据结构如字符串、列表、集合等,并提供丰富的操作命令,如存储、读取、删除等‌1。Redis Stack则是基于Redis的数据结构栈实现,它将Redis的列表数据结构与一些自定义操作命令结合起来,提供了栈的常用操作,并扩展了Redis的功能,支持更复杂的用例,如数据查询、图形数据结构和实时流处理等‌12。

小单的博客专栏 1881

【HEC】HECRAS中的降雨边界

网格降雨可能是城市地区建模的一个好选择。这是因为传统的一维(1D)建模并不能完全捕捉城市地区通常出现的复杂流动模式。使用网格降雨建模方法在构建包含多个未定义流动路径的模型时也非常有用。对于流量分支非常复杂的水道,设定边界条件可能会很困难。 HECRAS提供两种降雨边界添加的方法 - 在指定SA/2D FLOW AREA添加降雨边界 - 在hec-ras 6.0以上版本中 “气象数据” 的选项卡,可以添加具有空间变化的降水量、蒸散量和风。 两种方法只能选择一种,以下分别介绍

```On Earth, Be Water, By Coding``` 1397

Python爬虫:抓取餐饮平台顾客评分与评价的完整教程

本文介绍了如何使用Python爬虫技术抓取餐饮平台上的餐厅评分和评论数据。我们通过三种主要的抓取方法:静态网页抓取(requests)、动态网页抓取(Selenium)和API抓取,展示了如何抓取餐饮平台的数据。还介绍了如何使用pandas对抓取的数据进行存储、清洗、分析,并进行可视化和情感分析。通过本文的学习,您应该能够掌握如何使用Python爬虫抓取餐饮平台的评论数据,并将这些数据应用于市场分析、顾客反馈和服务优化等领域。

2201_76125261的博客 1144

【智能体学习笔记】Docker安装使用redis-stack

这份文档是一份从 Docker 环境准备、Python 依赖安装,到 Redis Stack 容器部署、功能验证的完整实操指南,帮助用户快速搭建适配大模型开发的 Redis 环境,解决了部署过程中的常见网络问题,确保环境可直接用于 LangChain 等大模型开发。

2403_88992060的博客 1296

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

分布式专题——9 Redis Stack扩展功能

了解 Redis 产品、Redis Stack 体验(RedisJSON、RedisSearch、RedisBloom、Cuckoo Filter)、Redis Stack 下载使用方式

念头通达 1057

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

3、Redis Stack扩展功能

比如在分布式场景下做用户登录功能,我们就可以将用户信息以JSON字符串的形式保存到Redis中,来代替单体应用中的Session,从而实现统一的登录状态管理。桶Busket中并不实际保存数据本身,而是保存数据的指纹(可以认为是压缩后的数据,实际上是数据对象的几个低位数据)。这样就极大的减少了数据迁移带来的麻烦。当Redis中存储的数据比较多时,搜索Redis中的数据是一件比较麻烦的事情。通常使用的 keys * 这样的指令,在生产环境一般都是直接禁用的,因为这样会产生严重的线程阻塞,影响其他的读写操作。

输入知识,消化知识,输出知识,分享知识,教人让我学习更好,业精于勤荒于嬉,行成于思毁于随 1778

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

在 CentOS 上安装 Redis Stack

Redis Stack在centos环境使用docker安装

weixin_42027185的博客 352
上一篇: Redis-Stack 与 Redis-Stack-Server:核心区别与选择指南
下一篇: 用户在访问电商系统的首页会触发什么SQL操作?
龙茶清欢
博客等级 码龄7年 3720粉丝 375原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

龙茶清欢

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值