电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > DOCX文档下载
分享到微信 分享到微博 分享到QQ空间

.NET 技术 Redis操作经验实现代码

  • 资源ID:207913950       资源大小:648.13KB        全文页数:17页
  • 资源格式: DOCX        下载积分:1.88金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要1.88金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

.NET 技术 Redis操作经验实现代码

Redis是一个支持数据结构更多的键值对数据库。它的值不仅可以是字符串等基本数据类型,也可以是类对象,更可以是Set、List、计数器等高级的数据结构。Memcached也可以保存类似于Set、List这样的结构,但是如果说要向List中增加元素,Memcached则需要把List全部元素取出来,然后再把元素增加进去,然后再保存回去,不仅效率低,而且有并发访问问题。Redis内置的Set、List等可以直接支持增加、删除元素的操作,效率很高,操作是原子的。Memcached数据存在内存中,memcached重启后数据就消失;Redis会把数据持久化到硬盘中,Redis重启后数据还存在。1 安装redis for windows >=2.8的版本支持直接安装为windows服务(Redis-x64-3.2.100.msi才可以,zip不行)如果下载msi自动装完服务,如果下载zip需要按照下面的方法安装为服务:2 redis与Memcached 区别2.1 redis优缺点2.1.1 redis的优点:1) 支持string、list、set、geo等复杂的数据结构。2) 高命中的数据运行时是在内存中,数据最终还是可以保存到磁盘中,这样服务器重启之后数据还在。3) 服务器是单线程的,来自所有客户端的所有命令都是串行执行的,因此不用担心并发修改(串行操作当然还是有并发问题)的问题,编程模型简单;4) 支持消息订阅/通知机制,可以用作消息队列;5) Key、Value最大长度允许512M;2.1.2 redis的缺点:1) Redis是单线程的,因此单个Redis实例只能使用一个CPU核,不能充分发挥服务器的性能。可以在一台服务器上运行多个Redis实例,不同实例监听不同端口,再互相组成集群。2) 做缓存性能不如Memcached;2.2 Memcached的优缺点2.2.1 Memcached的优点:1) 多线程,可以充分利用CPU多核的性能;2) 做缓存性能最高;2.2.2 Memcached的缺点:1) 只能保存键值对数据,键值对只能是字符串,如果有对象数据只能自己序列化成json字符串;2) 数据保存在内存中,重启后会丢失;3) Key最大长度255个字符,Value最长1M。2.3 总结Memcached只能当缓存服务器用,也是最合适的;Redis不仅可以做缓存服务器(性能没有Memcached好),还可以存储业务数据。3 redis命令行管理客户端3.1 直接启动redis安装目录下的redis-cli即可。执行set myKey abc,就是设置键值对myKey=abc执行get myKey就是查找名字是myKey的值;keys *是查找所有的keykey *n*是查找所有名字中含有n的key3.2 数据没有隔离性和Redis一样,Redis也是不同系统放到Redis中的数据都是不隔离的,因此设定Key的时候也要选择好Key。3.3 尽量选用默认的数据库Redis服务器默认建了16个数据库,Redis的想法是让大家把不同系统的数据放到不同的数据库中。但是建议大家不要这样用,因为Redis是单线程的,不同业务都放到同一个Redis实例的话效率就不高,建议放到不同的实例中。因此尽量只用默认的db0数据库。命令行下可以用select 0、select 1这样的指令切换数据库,最高为15。试试在不同数据库下新建、查询数据。了解的常用的几个命令就可以。所有对数据的操作都可以通过命令行进行,后面讲的.net操作Redis的驱动其实就是对这些命令的封装。4 GUI管理客户端RedisDesktopManager (0.9.3以后需要订阅)5 .NET连接redis推荐组件:StackExchange.Redishttps:/stackexchange.github.io/StackExchange.Redis/其他作品:NewLife.Redis基础教程using (ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost:6379") IDatabase db = redis.GetDatabase();/默认是访问db0数据库,可以通过方法参数指定数字访问不同的数据库 db.StringSet("Name", "abc"); 支持设置过期时间:db.StringSet("name", "", TimeSpan.FromSeconds(10) 获取数据:string s = db.StringGet("Name")/如果查不到则返回null Redis里所有方法几乎都支持异步,比如StringGetAsync()、StringSetAsync(),尽量用异步方法。注意看到访问的参数、返回值是RedisKey、RedisValue类型,进行了运算符重载,可以和string、byte之间进行隐式转换。6 命令6.1 键(Key)因为Redis里所有数据类型都是用KeyValue保存,因此Key操作针对所有数据类型, KeyDelete(RedisKey key):根据Key删除; KeyExists(RedisKey key)判断Key是否存在,尽量不要用,因为会有并发问题; KeyExpire(RedisKey key, TimeSpan? expiry)、KeyExpire(RedisKey key, DateTime? expiry)设置过期时间;6.2 字符串(String)可以用StringGet、StringSet来读写键值对,是基础操作StringAppend(RedisKey key, RedisValue value):向Key的Value中附加内容,不存在则新建;6.2.1 场景:计数器可以用作计数器:db.StringIncrement("count", 2.5); 给 count 这个计数器增加一个值,如果不存在则从0开始加;db.StringDecrement("count",1)计数器减值;获取还是用StringGet()获取字符串类型的值。比如可以用这个来计算新闻点击量、点赞量,效率非常高。public class NewsController : Controller private string NEWSPREFIX = "WX_NEWS_" / GET: News public async Task<ActionResult> Index(int id) using (ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost:6379") IDatabase db = redis.GetDatabase(); /默认是访问db0数据库,可以通过方法参数指定数字访问不同的数据库 string clickCount = NEWSPREFIX + Request.UserHostAddress + "_ClickCount_" + id; / Task<long> StringIncrementAsync: / 返回值:The value of key after the increment. (递增后的值) long increment = await db.StringIncrementAsync(clickCount); /RedisValue count = await db.StringGetAsync(clickCount); /ViewBag.count = count; ViewBag.count = increment; return View(); index.cshtml<h2>点击量:ViewBag.count</h2>6.2 列表(List) Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边) 一个列表最多可以包含 232- 1 个元素 (4294967295, 每个列表超过40亿个元素)。6.2.1 常用方法1.从左侧压栈:ListLeftPush(RedisKey key, RedisValue value);2.从左侧弹出:RedisValue ListLeftPop(RedisKey key);3.从右侧压栈:ListRightPush(RedisKey key, RedisValue value );4.从右侧弹出:RedisValue ListRightPop(RedisKey key);5.获取Key为key的List中第index个元素的值:RedisValue ListGetByIndex(RedisKey key, long index) ;6.获取Key为key的List中元素个数:long ListLength(RedisKey key) ;尽量不要用ListGetByIndex、ListLength因为会有并发问题。如果是读取而不pop,则使用ListRange:RedisValue ListRange(RedisKey key, long start = 0, long stop = -1)。不传start、end表示获取所有数据。指定之后则获取某个范围。6.2.2 应用场景可以把Redis的list当成消息队列使用,比如向注册用户发送欢迎邮件的工作,可以在注册的流程中把要发送邮件的邮箱放到list中,另一个程序从list中pop获取邮件来发送。 生产者、消费者模式。把生产过程和消费过程隔离。6.3 集合(Set) Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。 Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 集合中最大的成员数为 232- 1 (4294967295, 每个集合可存储40多亿个成员)。List与Set区别:6.3.1 常用方法SetAdd

注意事项

本文(.NET 技术 Redis操作经验实现代码)为本站会员(jay****li)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.