本文转载自微信公众号《UP技控》,作者conan5566。转载本文请联系UP技控公众号。Redis是一个开源的Key-Value存储,但它不仅仅是一个Key-Value存储。用官网的话说,Redis是一种数据结构存储,可以作为数据库、缓存和消息中间件使用。与传统的Key-Value存储Memcached相比,Redis有以下特点:快速丰富的数据结构,除了String,还有List,Hash,Set,SortedSet单线程,避免线程切换和锁性能消耗原子操作可以被持久化(RDB和AOF)发布/订阅支持Lua脚本分布式锁事务主从复制和高可用(RedisSentinel)集群(3.0及以上版本)数据结构1.String这是最简单的Redis类型。如果只使用这种类型,Redis就像一个持久化的Memcached服务器。2、ListRedis的List是基于双向链表实现的,可以支持反向查找和遍历。常见案例:聊天系统,获取社交网络用户的最新帖子,简单的消息队列,新闻分页列表,博客评论系统。3、HashHash是String类型的字段与值的映射表,见下图,类似于.NET中的Hashtable和Dictionary。主要用于存储对象,可以避免序列化开销和并发修改控制问题。4.SetSet也是一个列表,但它的特殊之处在于可以自动排序:当你需要存储一个列表数据,又不想重复时,Set是一个不错的选择(比如ID的集合).而Set提供了判断成员是否在Set集合中的接口,List没有。5.SortedSetSortedSet和Set的使用场景类似,不同的是SortedSet会根据提供的score参数自动排序。当您需要有序且不重复的集合列表时,您可以选择SortedSet数据结构。常见用例:游戏排行榜。开源客户端StackExchange.Redis:https://github.com/StackExchange/StackExchange.Redis?spm=5176.100239.blogcont272212.10.IsQwET&file=StackExchange.Redis基本用法StackExchange.Redis中的中心对象是命名空间中的ConnectionMultiplexer类堆栈交换。雷迪斯。这是隐藏多个服务器详细信息的对象。由于ConnectionMultiplexer具有许多功能,因此可以在调用方之间共享和重用。您不应为每个操作创建一个ConnectionMultiplexer。它是完全线程安全的,可用于此目的。在所有后续示例中,将假定您已保存一个ConnectionMultiplexer实例以供重用。但是现在,让我们创建一个。这可以使用传入配置字符串或ConfigurationOptions对象的ConnectionMultiplexer.Connect或ConnectionMultiplexer.ConnectAsync来完成。配置字符串可以采用逗号分隔的一系列节点的形式,所以让我们通过默认端口(6379)连接到本地机器上的实例:usingStackExchange.Redis;...ConnectionMultiplexerredis=ConnectionMultiplexer.Connect("localhost");//^^^storeandre-usethis!!!需要注意的是,ConnectionMultiplexer工具IDisposable不能再被处理掉了。这里有意不展示using语句的用法,因为ConnectionMultiplexer很少会重用这个对象,所以想简单地使用一下。更复杂的情况可能涉及主/副本设置。对于此用法,只需指定构成此逻辑Redis层的所有必需节点(它将自动识别主节点):ConnectionMultiplexerredis=ConnectionMultiplexer.Connect("server1:6379,server2:6379");如果发现两个节点都是主节点,您可以选择指定一个可用于解决问题的决胜键,但幸运的是这种情况很少见。有了ConnectionMultiplexer之后,可能需要做以下三件事:访问redis数据库(注意在集群的情况下,单个逻辑数据库可能分布在多个节点上)利用redis的发布/订阅功能来访问单个服务器以进行维护/监控
