• RedisHelper类,redis 锁


    using Newtonsoft.Json;
    using StackExchange.Redis;
    using System;
    using System.Collections.Generic;
    
    namespace IITaxTaskScheduler.Common
    {
        public class RedisHelper
        {
            private IDatabase _redisDb;
            public RedisHelper(IDatabase redisDb)
            {
                _redisDb = redisDb;
            }
    
            /// <summary>
            /// 取值string
            /// </summary>
            /// <param name="key"></param>
            /// <returns></returns>
            public string StringGet(string key)
            {
                return _redisDb.StringGetAsync(key).Result;
            }
    
            /// <summary>
            /// 赋值string
            /// </summary>
            /// <param name="key"></param>
            /// <param name="value"></param>
            public void SetString(string key, object value)
            {
                _redisDb.StringSetAsync(key, JsonConvert.SerializeObject(value));
            }
    
            /// <summary>
            /// 赋值string
            /// </summary>
            /// <param name="key"></param>
            /// <param name="value"></param>
            public void SetString(string key, object value, DateTime? expire)
            {
                _redisDb.StringSetAsync(key, JsonConvert.SerializeObject(value));
                if (expire != null)
                {
                    _redisDb.KeyExpire(key, expire - DateTime.Now);
                }
            }
    
            /// <summary>
            /// 单个push
            /// </summary>
            /// <param name="key"></param>
            /// <param name="value"></param>
            public void LeftPush(string key, object value)
            {
                _redisDb.ListLeftPushAsync(key, JsonConvert.SerializeObject(value));
            }
    
            /// <summary>
            /// 批量push
            /// </summary>
            /// <param name="key"></param>
            /// <param name="list"></param>
            public void LeftPushAll(string key, List<object> list)
            {
                foreach (var item in list)
                {
                    _redisDb.ListLeftPushAsync(key, JsonConvert.SerializeObject(item));
                }
            }
    
            /// <summary>
            /// 请求开始记录redis,并返回可否继续执行  true:可继续执行  false:不可继续执行
            /// </summary>
            /// <param name="key"></param>
            /// <returns></returns>
            public bool ActionExecuting(string key)
            {
                var result = _redisDb.HashExistsAsync(key, true);
                if (!result.Result)
                {
                    _redisDb.HashIncrementAsync(key, true);
                    _redisDb.KeyExpireAsync(key, new TimeSpan(0, 0, 5, 0));
                    return true;
                }
                else
                {
                    return false;
                }
            }
    
            /// <summary>
            /// 请求结算,删除redis记录
            /// </summary>
            /// <param name="key"></param>
            public void ActionExecuted(string key)
            {
                var result = _redisDb.HashExistsAsync(key, true);
                if (result.Result)
                {
                    _redisDb.KeyDeleteAsync(key);
                }
            }
        }
    }
  • 相关阅读:
    Mysql 数据库优化(五)sql语句优化【个人经验】转
    C# 编写的winform程序的托盘功能
    Mysql 数据库‘’函数‘、‘’事件‘’完成时间字段自动更新
    dd
    c# ‘using’三种用法
    集群、分布式、负载均衡
    iOS开发- Xcode 7添加pch文件
    iOS开发-pod install 出错 The dependency `AFNetworking (~> 2.6.0)` is not used in any concrete target.
    leetcode -- Find Median from Data Stream
    ubuntu14.04 LTS 更新源
  • 原文地址:https://www.cnblogs.com/personblog/p/12979012.html
Copyright © 2020-2023  润新知