首页 > 其他分享 >针对jsapi_ticket不能频繁刷新,缓存的几种方式

针对jsapi_ticket不能频繁刷新,缓存的几种方式

时间:2023-09-04 17:00:54浏览次数:44  
标签:缓存 jsapi 内存 new ticket 分布式

正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。由于获取jsapi_ticket的api调用次数非常有限,频繁刷新jsapi_ticket会导致api调用受限,影响自身业务,开发者必须在自己的服务全局缓存jsapi_ticket 。

 

在 .NET Core 中,你可以使用内置的缓存系统来管理和操作缓存数据。这个缓存系统提供了多种选项,可以在应用程序中方便地存储和检索数据。以下是在 .NET Core 中使用缓存的一些常见方法:

1. **内存缓存(Memory Cache):** 内存缓存将数据存储在应用程序的内存中,适用于存储临时数据,如短期缓存或频繁访问的数据。你可以通过 `MemoryCache` 类来使用内存缓存。

2. **分布式缓存(Distributed Cache):** 分布式缓存将数据存储在共享的缓存服务器中,适用于多个应用程序实例之间共享数据。你可以通过 `IDistributedCache` 接口来使用分布式缓存,例如使用 Redis 或其他分布式缓存系统。

3. **Response 缓存:** Response 缓存用于缓存 HTTP 响应,以提高网站性能。你可以使用 `ResponseCache` 特性或中间件来实现 Response 缓存。

以下是使用内存缓存和分布式缓存的简单示例:

```csharp
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.Caching.Distributed;

// 使用内存缓存
IMemoryCache memoryCache = new MemoryCache(new MemoryCacheOptions());
memoryCache.Set("key", "value", TimeSpan.FromMinutes(10)); // 存储数据

if (memoryCache.TryGetValue("key", out string cachedValue))
{
    Console.WriteLine($"Cached Value: {cachedValue}"); // 检索数据
}

// 使用分布式缓存(以 Redis 为例)
IDistributedCache distributedCache = new RedisCache(new RedisCacheOptions
{
    Configuration = "localhost:6379", // Redis 服务器连接字符串
    InstanceName = "MyApp" // 实例名
});

distributedCache.SetString("key", "value", new DistributedCacheEntryOptions
{
    AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(10) // 设置过期时间
});

if (distributedCache.TryGetValue("key", out byte[] cachedBytes))
{
    string cachedValue = Encoding.UTF8.GetString(cachedBytes);
    Console.WriteLine($"Cached Value: {cachedValue}");
}
```

在实际应用中,你需要根据项目需求选择合适的缓存策略和配置,并根据缓存的生命周期和数据特性来管理缓存数据。

  

标签:缓存,jsapi,内存,new,ticket,分布式
From: https://www.cnblogs.com/zzhsmallblog/p/17677503.html

相关文章

  • 缓存穿透与缓存雪崩
    1.缓存穿透:查询一个必然不存在的数据。比如文章表,查询一个不存在的id,每次都会访问DB,如果有人恶意破坏,很可能直接对DB造成影响。解决办法:对所有可能查询的参数以hash形式存储,在控制层先进行校验,不符合则丢弃。2.缓存失效:如果缓存集中在一段时间内失效,DB的压力凸显。这个没有完美解......
  • Nginx缓存
    add_header Cache-Control  Nginx下关于缓存控制字段cache-control的配置说明 - 运维小结 proxy_cache_validproxy_cache_valid指令是Nginx中实现缓存服务的一种重要方法,它的作用是控制缓存数据的有效期,防止过期数据对网站性能造成影响。当Nginx服务器响应客户端请求时......
  • Integer缓存机制随笔(清晰)
    总体主要分为两个方面①比较的是值一、基本数据类型与引用数据类型进行比较时,引用数据类型会进行拆箱,然后与基本数据类型进行值的比较举例:inti=12;Integerj=newInteger(12);i==j返回的是true二、引用数据类型与基本数据类型进行比较(equals方法),基本数......
  • 多级缓存架构(5&6)
    多级缓存架构缓存设计缓存穿透缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中,通常出于容错的考虑,如果从存储层查不到数据则不写入缓存层。缓存穿透将导致不存在的数据每次请求都要到存储层去查询,失去了缓存保护后端存储的意义。造成缓存穿透的基本原......
  • 缓存穿透、缓存击穿、缓存雪崩区别和解决方案
    一、缓存处理流程   前台请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到,那直接返回空结果。 ......
  • Redis缓存相关问题
    缓存穿透:就是,一个请求携带的参数是,id为负一我缓存中肯定没有,而且数据库肯定也没有,那么这个参数为负一的请求就直接绕过了redis,直接就访问了数据库,这就是缓存穿透缓存击穿:就是我有一个热点数据,比如秒杀,好巧不巧在秒杀开始的时候,刚好我缓存的KEY到期了,那么秒杀的请求全部打进了我......
  • VSCODE 关闭 go 的test缓存
    Ctrl+,进入设置,搜索gotestFlags点击Editinsettings.json在内添加"-count=1"......
  • django自带的cache缓存框架使用
    https://docs.djangoproject.com/zh-hans/4.2/topics/cache/#top主要步骤官网也写得很清楚了,包含怎么区使用。这里就展示一些配置django-redis来使用#settings.pyCACHES={'default':{#默认,预留'BACKEND':'django_redis.cache.RedisCache','......
  • redis缓存优化
    目录一缓存优化1.1缓存更新策略1.2配置文件中设置二穿透,击穿,雪崩2.1缓存穿透2.2缓存击穿2.3缓存雪崩一缓存优化1.1缓存更新策略#redis数据放在内存中,输入如果满了,再放数据--->肯定能放进去 -老数据怎么样?#方案LRU-LeastRecentlyUsed没有被使用时间最长的......
  • Redis 缓存满了怎么办?
    Redis缓存使用内存来保存数据,随着需要缓存的数据量越来越大,有限的缓存空间不可避免地会被写满。此时,应该怎么办?本篇文章接下来就来聊聊缓存满了之后的数据淘汰机制。值得注意的是,在Redis中 过期策略和内存淘汰策略是两个完全不同的概念。Redis过期策略指的是Redis使用......