博客
关于我
Redis概述和基础
阅读量:720 次
发布时间:2019-03-21

本文共 1797 字,大约阅读时间需要 5 分钟。

Redis入门与实践

NoSQL概念探索

NoSQL特点

  • 无固定的模式:数据存储不依赖于预定义的模式,灵活性更高。
  • 高性能处理大数据:支持高并发和大规模数据存储。
  • 多样化数据类型:支持字符串、哈希、列表、集合、有序集合等多种类型。
  • 可扩展性:容易根据业务需求扩展数据库水平。
  • 分布式特性:支持主从复制、集群部署。

Redis与传统RDBMS对比

  • 传统RDBMS
    • 数据结构化
    • 使用SQL
    • 严格的事务和一致性
    • 关系型数据模型
  • NoSQL
    • 没有固定的查询语言
    • 适合非关系型数据
    • 提供高性能、高可用性和可扩展性

NoSQL分类

  • 键值存储(Redis)

    • iygoUnlike传统数据库,键值对无需预设模式。
    • 适用于高速缓存、会话存储等场景。
  • 文档存储(MongoDB)

    • 数据库以文档形式存储,支持动态查询。
    • 适合处理非结构化数据,如社交网络信息。
  • 列存储(HBase)

    • 基于Google Bigtable设计,以列为中心。
    • 适用于高访问率的实时数据处理。
  • 图关系存储(Neo4j)

    • 节点和边构成图结构,用于网络分析和推荐系统。
  • Redis基础知识

    Redis数据结构

    • 字符串 (String):支持动态字符串操作,常用于计数器和缓存。
    • 哈希 (Hash):存储字段值对,适合用户信息存储。
    • 列表 (List):支持栈、队列操作,用于有序数据处理。
    • 集合 (Set):存储唯一值,不允许重复,适用于社交关系存储。
    • 有序集合 (ZSet):结合有序的特性,支持按顺序查询。
    • 地理位置 (Geospatial):支持经纬度存储和距离查询。
    • HyperLogLog:用于基数统计,优化PFADD命令。
    • 位图 (Bitmap):用于状态存储,如用户活跃度、登录记录等。

    Redis持久化

    • RDB:将数据结构快照文件记录到磁盘。
    • AOF:能量节省模式,基于Redis命令记录。
    • R wanderedbAOF+: 提高写性能,但文件体积较大。

    Redis性能优化

    • 单线程架构:所有操作都在单线程中完成,性能由内存和 CPU 限制。
    • 高效操作:Redis采用C语言实现,减少上下文切换。
    • 高性能命令:像LUA脚本、管道和多次查询提升效率。

    Redis核心应用场景

    • 高速缓存
    • 实时计数:如点击量统计、点赞数。
    • 消息中间件:Redis Pub/Sub 适用于微服务架构的消息队列。
    • 地图信息服务
    • 用户行为分析

    事务与锁

    Redis事务

    • 本质涉及多个命令进行原子性操作。
    • 乐观锁:基于版本控制,减少并发问题。
    • 监视(Watch): 获取数据版本,防止并发修改冲突。

    分布式锁

    • Redisis:基于彼此的leshooting机制。
    • 基于HA modifiersLE:可靠的分布式锁实现,减少死锁风险。

    Jedis与Spring Boot

    Jedis简介

    • Redis官方Java客户端,广泛用于Spring Boot应用中。
    • 提供与Redis交互的方便接口,支持事务、高级序列化等功能。

    Spring Boot整合

    • 依赖项: spring-boot-starter-data-redis。
    • 配置示例
      spring.redis.host=127.0.0.1spring.redis.port=6379
    • ** RedisTemplate 操作**:
      @Autowiredprivate RedisTemplate
      redisTemplate;@Testvoid contextLoads() { redisTemplate.opsForValue().set("counter", "1"); System.out.println(redisTemplate.opsForValue().get("counter"));}

    Redis优化与发展

    • 持久化选择:根据需求选择RDB或AOF。
    • 高负载性能:通过克隆(Nearby nodes)优化读写性能。
    • 集群部署:使用 Redis Sentinel 或 Redis Cluster 汇集。
    • LUA脚本: 提升批量操作效率,适合复杂逻辑场景。

    通过合理运用Redis的特性和优化方案,开发者可以显著提升应用性能并应对各种业务挑战。在实际项目中,根据具体需求选择合适的数据类型和工作流程,确保 Redis系统的高效稳定运行。

    转载地址:http://ynygz.baihongyu.com/

    你可能感兴趣的文章
    Netty工作笔记0027---NIO 网络编程应用--群聊系统2--服务器编写2
    查看>>
    Netty工作笔记0028---NIO 网络编程应用--群聊系统3--客户端编写1
    查看>>
    Netty工作笔记0034---Netty架构设计--线程模型
    查看>>
    Netty工作笔记0050---Netty核心模块1
    查看>>
    Netty工作笔记0057---Netty群聊系统服务端
    查看>>
    Netty工作笔记0060---Tcp长连接和短连接_Http长连接和短连接_UDP长连接和短连接
    查看>>
    Netty工作笔记0063---WebSocket长连接开发2
    查看>>
    Netty工作笔记0068---Protobuf机制简述
    查看>>
    Netty工作笔记0070---Protobuf使用案例Codec使用
    查看>>
    Netty工作笔记0072---Protobuf内容小结
    查看>>
    Netty工作笔记0074---handler链调用机制实例1
    查看>>
    Netty工作笔记0077---handler链调用机制实例4
    查看>>
    Netty工作笔记0081---编解码器和处理器链梳理
    查看>>
    Netty工作笔记0083---通过自定义协议解决粘包拆包问题1
    查看>>
    Netty工作笔记0084---通过自定义协议解决粘包拆包问题2
    查看>>
    Netty工作笔记0085---TCP粘包拆包内容梳理
    查看>>
    Netty常用组件一
    查看>>
    Netty常见组件二
    查看>>
    netty底层源码探究:启动流程;EventLoop中的selector、线程、任务队列;监听处理accept、read事件流程;
    查看>>
    Netty心跳检测
    查看>>