电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

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

17页
  • 卖家[上传人]:jay****li
  • 文档编号:207913950
  • 上传时间:2021-11-05
  • 文档格式:DOCX
  • 文档大小:648.13KB
  • / 17 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、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) 高命中的数据运行

      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不仅可以做缓存服

      3、务器(性能没有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、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(),尽量用异步方法。注意看到访

      5、问的参数、返回值是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.Str

      6、ingDecrement(count,1)计数器减值;获取还是用StringGet()获取字符串类型的值。比如可以用这个来计算新闻点击量、点赞量,效率非常高。public class NewsController : Controller private string NEWSPREFIX = WX_NEWS_; / GET: News public async Task Index(int id) using (ConnectionMultiplexer redis = ConnectionMultiplexer.Connect(localhost:6379) IDatabase db = redis.GetDatabase(); /默认是访问db0数据库,可以通过方法参数指定数字访问不同的数据库 string clickCount = NEWSPREFIX + Request.UserHostAddress + _ClickCount_ + id; / Task StringIncrementAsync: / 返回值:The value of key after the incre

      7、ment. (递增后的值) long increment = await db.StringIncrementAsync(clickCount); /RedisValue count = await db.StringGetAsync(clickCount); /ViewBag.count = count; ViewBag.count = increment; return View(); index.cshtml点击量:ViewBag.count6.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 val

      8、ue );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分享,可在线阅读,更多相关《.NET 技术 Redis操作经验实现代码》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.