redis入门

1 介绍

1.1 简介

        Redis(Remote Dictionary Server)是一个使用ANSI C编写的支持网络、基于内存分布式、可选持久性键值对存储数据库。根据月度排行网站DB-Engines.com的数据,Redis是最流行的键值对存储数据库。                                                                -- 维基百科

        Redis是一种开源的、高性能的键值对(key-value)数据库,具有多种数据类型支持和持久化功能,广泛应用于缓存、消息队列和即时信息查询等场景

        Redis的出现是为了解决关系型数据库在高并发情况下的性能瓶颈

Redis的官方网站地址:https://redis.io/

1.2 命名规范

业务模块名:业务逻辑含义:其他:value类型

2 基础数据类型

redis 支持多种数据类型,每种都有其独特的操作和应用场景。以下将详细介绍Redis的五种基本数据类型及其常用操作:

2.1 字符串(String)

  • 基本操作:字符串是Redis中最基本的数据类型,可以存储字符串、整数、浮点数等。操作包括SETGETMSETMGETINCRDECRAPPEND等。

应用实例

  • 缓存数据:例如,缓存用户信息:

  • 计数器:对网站访问次数进行计数:

  • 分布式锁:实现简单的分布式锁,用于控制多个客户端对同一资源的访问。

2.2 列表(List)

  • 基本操作:列表是简单的字符串列表,支持在列表两端插入或删除元素。操作包括LPUSHRPUSHLPOPRPOPLRANGELINDEX等。

应用实例

  • 消息队列:生产者将消息放入队列左端,消费者从右端取出消息:

  • 任务队列:使用BRPOP实现阻塞队列,等待任务到来。
  • 最近访问记录:例如,记录用户的浏览历史,最新访问的内容插入到列表头部:

2.3 集合(Set)

  • 基本操作:集合是无序且不重复的字符串集合。操作包括SADDSREMSMEMBERSSISMEMBER等。

应用实例

  • 标签管理:给文章添加标签,一个标签集合对应一篇文章:

  • 好友关系:存储用户的好友列表,通过集合的交集操作找到共同好友。
  • 去重操作:存储唯一的访问IP,实现去重:

2.4 有序集合(Sorted Set)

  • 基本操作:有序集合类似于集合,但每个元素关联一个分数,通过分数排序。操作包括ZADDZREMZRANGEZREVRANGE等。

应用实例

  • 排行榜:例如,用户的积分排行榜,按积分排序:

  • 时间线:存储用户发布的微博,用时间戳作为分数:

2.5 哈希(Hash)

  • 基本操作:哈希是一个键值对集合,适用于存储对象。操作包括HSET,HGET,HMGET,HINCRBY,HGETALL等。

应用实例

  • 存储用户信息

  • 配置信息:存储应用程序的配置参数:

3 应用场景与优势

  • 缓存系统:由于Redis的高性能和内存存储特性,使其成为理想的缓存解决方案,可以大幅减少数据库的负载。例如,在网站应用中,可以将频繁查询的数据缓存到Redis中,提高响应速度。
  • 消息队列:利用列表类型的特性,Redis可以作为消息队列使用,支持发布/订阅模式,使客户端之间能够通过消息传递进行通信。这在实时通知、任务分发等场景中非常有用。
  • 即时信息查询:Redis适合用于需要快速读写的场景,如热点新闻、购票抢票等。例如,可以通过Redis来存储用户的在线状态、最近的位置信息等。
  • 分布式锁:Redis的原子性操作和高性能使其成为实现分布式锁的理想选择,可用于同步进程和避免资源竞争。例如,在并发环境下,通过Redis的setnx命令可以实现锁的获取和释放。

4 与其他NoSQL数据库之间的对比

RedisMemcachedMongoDB
数据结构支持支持丰富的数据结构,包括String(字符串)、List(列表)、Set(集合)、Hash(哈希)和Sorted Set(有序集合)。主要支持简单的Key-Value数据结构,更适合作为缓存系统。支持更为复杂的文档型数据结构,适合处理结构化和半结构化数据。
性能由于基于内存运行,性能极高,读取速度可达数十万次每秒,写速度也可达十万次每秒。同样基于内存,性能与Redis相当,但在高并发场景下表现更优。虽也基于内存,但因支持更复杂的查询和写入操作,性能略低于Redis和Memcached。
数据持久化支持数据持久化,可以将数据保存到硬盘上,通过RDB快照和AOF日志实现数据安全。不支持持久化,数据仅存在于内存中,重启后数据会丢失。支持数据持久化,通过日记文件(journaling)和复制集(replica sets)保证数据安全。
扩展性支持主从复制和哨兵模式实现高可用性,但需要手动进行分片。可以通过一致性哈希进行分布式扩展,但节点间无数据同步。支持自动分片和复制集,能够自动进行数据均衡和故障转移。
事务支持支持一定程度的事务处理,但仅限于单个命令的入队执行。不支持4.0版本后开始支持
查询语言使用专用的命令接口,支持丰富的命令进行数据操作。使用简单的文本协议进行通信。使用BSON格式进行数据交换,支持丰富的查询语言。
应用场景适用于缓存、会话管理、计数器、消息队列等需要高性能和复杂数据结构的场景。主要用于缓存系统,减少数据库负载。适用于大数据量存储、实时数据分析、内容管理等场景。

         综上所述,Redis以其丰富的数据结构和高性能在多种场景下表现优异,尤其是需要快速读写和复杂数据结构的应用中占据明显优势。Memcached则更适合作为后端数据库的前端缓存系统,简化数据结构并提高响应速度。MongoDB的独特之处在于其处理大规模数据和复杂查询的能力,适合大数据和实时分析应用。

  • 19
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值