ServiceStack.Redis它在4.0版本之后就商业化,有做限制:每小时只能有6000次的Redis访问。网上有对ServiceStack.Redis和StackExchange.Reids进行比较,结果是前者性能比较好,但是有限制怎么办?有限制就破解呗。这里我们先不讲怎么破解,先做简单demo。
首先,创建一个控制台项目,添加nuget包。
简介: String 数据结构是简单的key-value类型,value其实不仅是String,也可以是数字,String在redis内部存储默认就是一个字符串,被redisObject所引用,当遇到incr,decr等操作时会转成数值型进行计算,此时redisObject的encoding字段为int
String 内存分布原理:
1. raw 编码当我们存储的string类型的value 的长度小于是39byte[44byte]字节的时候会以raw编码的形式存放。
2. embstr编码当存放大于44byte的字符串类型的值得时候,会一次性开辟空间,它会预留一些空间,如果内存不够会成倍增长。
应用场景: String是最常用的一种数据类型,普通的key/ value 存储都可以归为此类,即可以完全实现目前 Memcached 的功能,并且效率更高。 使用场景:常规key-value缓存应用。常规计数: 微博数,、粉丝数等功能。
简单demo(还有很多实用的方法,这里不一一举例):
简介: Redis Hash对应Value内部实际就是一个HashMap(通过“大key“和“小key“存取数据)。
应用场景: 适合存储实体类型的数据,因为如果使用string来存储实体类型的数据,需要先序列化为json字符串,很是麻烦。而且hash的结构可以任意添加或删除字段名,灵活性更高。
简单demo(还有很多实用的方法,这里不一一举例):
简介: List列表是简单的字符串列表,按照插入顺序排序内部实现为LinkedList(链表结构,适合做增删,查找)
应用场景: Redis List的应用场景非常多,也是Redis最重要的数据结构之一,比如Twitter的关注列表,粉丝列表等都可以用Redis的List结构来实现,或者用来做简单的消息队列也是可以,把生产过程和消费过程隔离。
简单demo(还有很多实用的方法,这里不一一举例):
简介: 不重复的集合,可以去重的无序的集合。
应用场景: 在微博中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。Redis还为集合提供了求交集、并集、差集等操作,可以非常方便的实现如共同关注、共同喜好、二度好友等功能,对上面的所有集合操作,你还可以使用不同的命令选择将结果返回给客户端还是存集到一个新的集合中。
简单demo(还有很多实用的方法,这里不一一举例):
简介: 它是一个有序的去重的集合,并根据score排序。Redis sorted set的内部使用HashMap和跳跃表(SkipList)来保证数据的存储和有序,HashMap里放的是成员到score的映射,跳跃表按score从小到大保存所有集合元素。使用跳跃表的结构可以获得比较高的查找效率,并且在实现上比较简单。
应用场景: 排行榜
简单demo(还有很多实用的方法,这里不一一举例):
Redis一共有八大结构,这里只讲了一部分,想要熟悉,还是得自己多写多练。