net core开发技巧之使用缓存 (四)

·  阅读 106
net core开发技巧之使用缓存 (四)

这是我参与8月更文挑战的第9天,活动详情查看:8月更文挑战

引言

Redis 是一个K/V 模式的数据库,日常开发中,当某个频繁访问的服务出现问题时

我们应该首先考虑是否可以使用Redis 缓存优化,为什么呢?因为Redis 完全基于内存,读取非常快速,数据结构也就那样几个。读取数据库来的快、也方便集群.... 今天,我们来好好了解一下redis缓存的使用技巧

正文

何时使用缓存

  • 当我们某些API的数据更新不是很频繁,且其访问频率很高时。
  • 非常耗时的查询结果可以存在Redis
  • 计数器、分布式锁、排行榜...

简单应用

2.1 String

可别被这个类型名称给迷惑哟,String类型不单单可以存储字符串。还可以存储byte int long double之类的类型,甚至连对象我们也可以通过序列化的方式存入。例如:我们想缓存一个User 数据

image.png

static void Main(string[] args)
{
    using var conn = ConnectionMultiplexer.Connect("localhost,allowAdmin=true,abortConnect=false,connectTimeout=2000");
    var db = conn.GetDatabase();

    var user = new User { Name = "罗翔说刑法", Uid = "517327498", Subscribers = "1698w" };
    string key = $"user:{user.Uid}";
    db.StringSet($"user:{user.Uid}", JsonSerializer.Serialize(user));
    var value = (string)db.StringGet(key);
    Console.WriteLine(value);
}
复制代码

此处就是通过将user对象序列化为Json字符串后,当成string存入了 key 中

Tips:生成键名时,一定要惯用一种风格 例如: 将 user:xxx 作为键是为了方便后期使用keys或scan 命令找到所有user。
顺带一提:,使用MessagePack 或 Bson 可以让存入的字符串更小哦~

2.2 HASH

存储一组关联数据时很适合使用 HASH 类型,例如需要统计每个页面的访问量时。可以拟定下面的Hash结构:

image.png

然后再把每天的数记录到sql,就不用担心修改数据太多次影响效率啦...

2.3 Set

这个类型呢适合用来做一些不重复的数据,例如B站的导航条里面的数据(假如这些数据是做过菜单配置的..)

image.png

集群

为了提升redis单机性能,我们可以使用集群的方式来优化(后更新)

分类:
后端
标签: