谈谈Redis快速入门及应用

存储 存储软件 Redis
Redis是一个开源的Key-Value存储,但又不仅仅是Key-Value存储,用官网上的话来说,Redis是一个数据结构存储,可用作数据库、缓存和消息中间件。

[[384094]]

本文转载自微信公众号「UP技术控」,作者conan5566 。转载本文请联系UP技术控公众号。 

简介

Redis是一个开源的Key-Value存储,但又不仅仅是Key-Value存储,用官网上的话来说,Redis是一个数据结构存储,可用作数据库、缓存和消息中间件。相对于传统的Key-Value存储Memcached来说,Redis具有如下特点:

  • 速度快
  • 丰富的数据结构,除String之外,还有List、Hash、Set、Sorted Set
  • 单线程,避免了线程切换和锁的性能消耗
  • 原子操作
  • 可持久化(RDB与AOF)
  • 发布/订阅
  • 支持Lua脚本
  • 分布式锁
  • 事务
  • 主从复制与高可用(Redis Sentinel)
  • 集群(3.0版本以上)

数据结构

1、String

这是最简单的Redis类型。如果只使用这种类型,Redis就像一个可持久化的Memcached服务器。

2、List

Redis的List是基于双向链表实现的,可以支持反向查找和遍历。

常用案例:聊天系统、社交网络中获取用户最新发表的帖子、简单的消息队列、新闻的分页列表、博客的评论系统。

3、Hash

Hash是一个String类型的field和value之间的映射表,请见下图,类似于.NET中的Hashtable和Dictionary。主要用来存储对象,可以避免序列化的开销和并发修改控制的问题。

4、Set

Set也是一个列表,不过它的特殊之处在于它是可以自动排重的:当需要存储一个列表数据,而又不希望出现重复的时候,Set是一个很好的选择(比如ID的集合)。并且Set提供了判断某个成员是否在一个Set集合内的接口,这也是List所没有的。

5、Sorted Set

Sorted Set和Set的使用场景类似,区别是Sorted Set会根据提供的score参数来进行自动排序。当你需要一个有序的并且不重复的集合列表,那么就可以选择Sorted Set数据结构。常用案例:游戏中的排行榜。

开源客户端

StackExchange.Redis:

https://github.com/StackExchange/StackExchange.Redis?spm=5176.100239.blogcont272212.10.IsQwET&file=StackExchange.Redis

基本用法

StackExchange.Redis中的中心对象是名称空间中的ConnectionMultiplexer类StackExchange.Redis。这是隐藏多个服务器详细信息的对象。由于ConnectionMultiplexer功能很多,因此可以在调用方之间共享和重用它。您不应该创建ConnectionMultiplexer每个操作。它是完全线程安全的,并且可以用于此用途。在所有后续示例中,将假定您已ConnectionMultiplexer保存一个实例以供重用。但是现在,让我们创建一个。这可以使用ConnectionMultiplexer.Connect或ConnectionMultiplexer.ConnectAsync传入配置字符串或ConfigurationOptions对象来完成。配置字符串可以采用逗号分隔的一系列节点的形式,因此让我们仅通过默认端口(6379)连接到本地计算机上的实例:

  1. using StackExchange.Redis; 
  2. ... 
  3. ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost"); 
  4. // ^^^ store and re-use this!!! 

需要注意的是ConnectionMultiplexer工具IDisposable,可以在不再需要处置。这是故意不显示using语句用法的原因,因为ConnectionMultiplexer要重用此对象非常少见,因此您希望简短地使用它。

更复杂的情况可能涉及主/副本设置。对于此用法,只需指定组成该逻辑Redis层的所有所需节点(它将自动识别主节点):

ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("server1:6379,server2:6379");

如果发现两个节点都是主节点,则可以有选择地指定一个决胜键,该键可用于解决问题,但是幸运的是这种情况很少见。

有了之后ConnectionMultiplexer,您可能需要做以下三件事:

  • 访问redis数据库(请注意,在集群的情况下,单个逻辑数据库可能分布在多个节点上)
  • 利用redis的发布/订阅功能
  • 访问单个服务器以进行维护/监视

 

责任编辑:武晓燕 来源: UP技术控
相关推荐

2015-10-29 15:36:19

Redis入门

2009-06-10 15:14:00

2009-09-25 10:24:40

Androind入门教OPhone

2020-07-30 07:30:17

存储技术数据

2020-04-14 14:30:43

Redis数据库开源

2023-06-27 08:34:32

2020-09-25 11:50:12

前后端分离架构Web

2013-01-17 15:51:42

Android开发应用程序组件

2009-09-24 15:27:41

Hibernate查询

2011-03-08 16:50:35

2021-05-07 08:02:53

Sentinel 流量服务

2010-06-24 13:35:53

GRE协议

2011-11-29 12:27:54

2020-03-18 13:28:29

SpringDDDWeb

2009-10-26 10:44:27

VB.NET API函

2016-07-15 09:58:00

应用交付单边加速太一星晨

2012-05-29 21:38:14

Metro UI

2011-06-28 17:52:49

SEO

2021-03-02 06:32:03

Ansible系统运维

2020-04-22 14:15:32

Vue 3.0语法前端
点赞
收藏

51CTO技术栈公众号