ServiceStack.Redis 缓存过期,并未失效的暂时解决办法

服务器:Redis版本运行环境如图,生产环境是全内存运行。

客户端NuGet 引入:ServiceStack.Redis

加入缓存代码:

        /// <summary>
        ///  Set
        /// </summary>
        /// <typeparam name="T">类型</typeparam>
        /// <param name="key">键</param>
        /// <param name="t">值</param>
        /// <param name="timeout">多少分钟后过期</param>
        /// <returns></returns>
        public static bool Set<T>(string key, T t, double minOut = 60*3)
        {
            using (var redisClient = RedisManager.GetClient())
            {
                key = "Str_" + key;
                return redisClient.Set<T>(key, t, ExpireDateTime(minOut));
            }
        }

但过了相应的时间之后,缓存没有失效。做了各种尝试.... 最后:

获取所有缓存名称

List<string> GetAllKeys();

定点清除,也可以全部干掉

        void FlushAll();
        T Get<T>(string key);
        IDictionary<string, T> GetAll<T>(IEnumerable<string> keys);
        long Increment(string key, uint amount);
        bool Remove(string key);
        void RemoveAll(IEnumerable<string> keys);

希望给一些方法。解决问题不全都靠技术,方法也行。 

时间: 2024-10-05 04:44:47

ServiceStack.Redis 缓存过期,并未失效的暂时解决办法的相关文章

C# Redis缓存过期实现延迟通知实战演练

一.场景描述 在实际开发过程中经常会遇到一些有时效性数据的业务场景,比如订单支付处理超时提醒.当用户在商城上进行下单支付,我们假设如果8小时没有进行支付,那么就后台自动对该笔交易的状态修改为订单关闭取消,同时给用户发送一份邮件提醒.那么我们应用程序如何实现这样的需求场景呢?可能大家都会想到的是最简单粗暴的办法:通过定时任务轮询方式单独创建新启一个线程去检测当前任务,这种实现方式实时刷新效率较低同时也这样对服务器压力比较大.我们是否有更好的方式去实现呢?这里说的是用Redis去实现这样的一个功能.

Redis缓存过期处理与内存淘汰机制

Redis对已过期的key如何处理? 设置了expire的key缓存过期了,但是服务器的内存还是会被占用,这是因为redis所基于的两种删除策略. redis有两种策略: (主动)定时删除 定时随机的检查过期的key,如果过期则清理删除.(每秒检查次数在redis.conf中的hz配置) (被动)惰性删除 当客户端请求一个已经过期的key的时候,那么redis会检查这个key是否过期,如果过期了,则删除,然后返回一个nil.这种策略对cpu比较友好,不会有太多的损耗,但是内存占用会比较高. 所以

Adobe Flash Player 因过期而遭到阻止的解决办法

今天Chrome内核的所有浏览器打开网页均提示"Adobe Flash Player 因过期而遭到阻止",每一次都弹出这条信息,非常烦人. 解决办法 找到浏览器的快捷方式,右击点属性,在目标(T)中 添加 "–allow-outdated-plugins" ,表示允许过期插件运行.像我的添加之后,如下格式:注意"–allow-outdated-plugins"与".exe"有空格 C:\Users\zengwh\AppData

Windows聚焦失效问题的解决办法

1. 设置Windows聚焦 步骤:任务栏右键 → 任务栏设置 → 锁屏界面 → 背景选择Windows聚焦 2. 解决Windows聚焦失效问题 设置完Windows聚焦之后,锁屏界面却没有变. 尝试过下面的方法,但没有解决问题. 先把背景设置为[图片]. 删除C:\Users\84745\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManager_**目录下的Settings文件夹. 再把背景设置为[Windows聚焦],按

关于使用navigationController,前后2个视图控制器navigationBar隐藏属性不同,导致右滑手势失效问题的解决办法

###1.问题描述:如A是navigationController的rootViewController,在这个页面navigationBar是显示的(隐藏属性为NO),它push圧栈过来B视图控制器,B页面navigationBar是不显示的(隐藏属性为YES),有一定几率会出现,B要右滑pop自己要圧栈A时,右滑手势会失效,即使B中设置 self.navigationController.interactivePopGestureRecognizer.enabled = YES也不起作用##

virtualBox 虚拟机下nginx设置不缓存静态文件不起作用解决办法

最近开发的时候,调整js时会一直使用缓存文件,无法显示改动!nginx配置静态文件add_header Cache-Control no-cache;也不起作用,很苦恼! nginx配置代码:events { worker_connections 768; # multi_accept on;} http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types

Android 中listview的item点击事件失效了的解决办法

原因多半是由于在自己定义的Item中存在诸如ImageButton,Button,CheckBox等子控件(也可以说是Button或者Checkable的子类控件),此时这些子控件会将焦点获取到,所以常常当点击item时变化的是子控件,item本身的点击没有响应. 即在Item布局的根布局加上android:descendantFocusability=”blocksDescendants”的属性就好了

SpringBoot2整合Redis缓存

遵循SpringBoot三板斧 第一步加依赖 <!-- Redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!-- redis依赖commons-pool 这个依赖一定要添加 --> <

redis缓存队列+MySQL +php任务脚本定时批量入库

原文地址:http://blog.jobbole.com/99567/ 需求背景:有个调用统计日志存储和统计需求,要求存储到mysql中:存储数据高峰能达到日均千万,瓶颈在于直接入库并发太高,可能会把mysql干垮. 问题分析 思考:应用网站架构的衍化过程中,应用最新的框架和工具技术固然是最优选择:但是,如果能在现有的框架的基础上提出简单可依赖的解决方案,未尝不是一种提升自我的尝试.解决: 问题一:要求日志最好入库:但是,直接入库mysql确实扛不住,批量入库没有问题,done.[批量入库和直接