当前位置: 首页 > news >正文

图跃企业网站建设手机网站怎样排版最好

图跃企业网站建设,手机网站怎样排版最好,让别人看到自己做的网站,wordpress首页图片管理Redis 使用 Lua 脚本进行原子操作Intro之前写过一篇文章也是 Redis 使用 LUA 脚本实现分布式的 CAS 操作#xff0c;可以参考#xff1a;基于 Redis 实现 CAS 操作最近使用 Redis 的时候有一个需求#xff0c;只有值发生变化的时候才更新#xff0c;如果要更新的值和现在的… Redis 使用 Lua 脚本进行原子操作Intro之前写过一篇文章也是 Redis 使用 LUA 脚本实现分布式的 CAS 操作可以参考基于 Redis 实现 CAS 操作最近使用 Redis 的时候有一个需求只有值发生变化的时候才更新如果要更新的值和现在的值是一样的就不用更新有点类似于 SET NX只是 SET NX 只有值不存在的时候才会 SET我的需求则是要检查要 SET 的值和 Redis 里的值如果不一样就 SET一样就直接返回Implement我实现了针对 String 和 Hash 的 SET 检查核心就是我们的 Lua 脚本实现代码如下对于 Hash 会多一个参数 —— hash field name, 对于 string 则直接是 value 了就会比 hash 少一个参数private const string HashSetWhenValueChangedLuaScript   if redis.call(HGET, KEYS[1], ARGV[1])  ARGV[2] thenreturn 0 elseredis.call(HSET, KEYS[1], ARGV[1], ARGV[2])return 1 end ;private const string StringSetWhenValueChangedLuaScript   if redis.call(GET, KEYS[1])  ARGV[1] thenreturn 0 elseredis.call(SET, KEYS[1], ARGV[1])return 1 end ; 实现起来也比较简单就是先取一下 Redis 中的数据如果和输入的值是一样就返回 0不一样则更新值然后返回 1StackExchange.Redis 使用 API在 StackExchange.Redis 中可以使用 ScriptEvaluate/ScriptEvaluateAsync 来执行 Lua 脚本为了方便使用我把他们封装成了扩展方法实现如下public static bool StringSetWhenValueChanged(this IDatabase db, RedisKey key, RedisValue value) {return (int)db.ScriptEvaluate(StringSetWhenValueChangedLuaScript, new[] { key }, new[] { value })  1; }public static async Taskbool StringSetWhenValueChangedAsync(this IDatabase db, RedisKey key, RedisValue value) {return await db.ScriptEvaluateAsync(StringSetWhenValueChangedLuaScript, new[] { key }, new[] { value }).ContinueWith(r  (int)r.Result  1); }public static bool HashSetWhenValueChanged(this IDatabase db, RedisKey key, RedisValue field, RedisValue value) {return (int)db.ScriptEvaluate(HashSetWhenValueChangedLuaScript, new[] { key }, new[] { field, value })  1; }public static async Taskbool HashSetWhenValueChangedAsync(this IDatabase db, RedisKey key, RedisValue field, RedisValue value) {return await db.ScriptEvaluateAsync(HashSetWhenValueChangedLuaScript, new[] { key }, new[] { field, value }).ContinueWith(r  (int)r.Result  1); } Sample使用示例可以参考下面的测试用例[Fact] public void StringSetWhenValueChangedTest() {var key  ${nameof(StringSetWhenValueChangedTest)};var redis  DependencyResolver.Current.GetRequiredServiceIConnectionMultiplexer().GetDatabase();redis.StringSet(key, 1);// update to 1 if now is not 1Assert.False(redis.StringSetWhenValueChanged(key, 1));Assert.Equal(1, redis.StringGet(key));// update to 2 if now is not 2Assert.True(redis.StringSetWhenValueChanged(key, 2));Assert.Equal(2, redis.StringGet(key)); }[Fact] public void HashSetWhenValueChangedTest() {var key  ${nameof(HashSetWhenValueChangedTest)};var field  testField;var redis  DependencyResolver.Current.GetRequiredServiceIConnectionMultiplexer().GetDatabase();redis.HashSet(key, field, 1);Assert.False(redis.HashSetWhenValueChanged(key, field, 1));Assert.Equal(1, redis.HashGet(key, field));Assert.True(redis.HashSetWhenValueChanged(key, field, 2));Assert.Equal(2, redis.HashGet(key, field)); } More在使用 Lua 脚本的时候如果要使用不等于的逻辑需要小心一些和其他语言不同需要使用 ~ 而非 ! 来表示不等Referenceshttps://github.com/WeihanLi/WeihanLi.Redis/blob/dev/src/WeihanLi.Redis/RedisExtensions.cshttps://github.com/WeihanLi/WeihanLi.Redis/blob/dev/test/WeihanLi.Redis.UnitTest/RedisExtensionsTest.cs基于 Redis 实现 CAS 操作
http://www.pierceye.com/news/188616/

相关文章:

  • 珠海专业做网站制作做网站网站的代理算网站罪吗
  • 建设局网站简介通信建设网站
  • php做网站用什么开发工具大专软件技术工资一般多少
  • 网站建设服务承诺wordpress 博客园
  • seo综合查询站长工具关键词全网营销案例
  • 深圳专业做网站设计政务服务网站建设性建议
  • 做暧免费观看网站哪个网站可以给图片做链接
  • wordpress最好的主题东莞债务优化
  • 全国网站建设大赛网店网站设计
  • 学网站建设需要学多久wordpress火车头插件
  • wordpress 网站实例中国纪检监察报app下载
  • 网站链接dw怎么做营销推广方法
  • 觅知网 大而全的高质量素材站开发手机网站用什么好
  • 建设一个广告联盟的网站医院网站设计与实现
  • 公司网站备案必须是企业信息么网站搭建好有什么内容可以修改
  • 弄网站赚钱吗电影网站怎么做要多少钱
  • 做优化网站能以量取胜么好素材网站
  • wordpress主题网站江苏建设工程教育网
  • 网站制作 客户刁难做宠物网站赚钱吗
  • 网站突然不收录了如何形容一个网站做的好
  • 怎么建网站教程视频做网站跟推广哪家公司好
  • 怎么做网站报告四平网站公司
  • 飞扬动力网站建设支付网站建设要求
  • 达美网站建设廊坊seo扣费
  • 好享购物官方网站购物网页制作与网站开发从入门到精通
  • 坪山网站建设哪家便宜系部网站建设研究方案
  • 如何备份网站上海的招聘网站有哪些
  • 企业门户网站建设流程蝶恋花直播app下载安装
  • 株洲网站建设推广报价seo基础知识培训视频
  • 漳州网站建设选博大不错php网站开发经理招聘