前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vapor 之 cache记录

vapor 之 cache记录

作者头像
大话swift
发布2019-07-03 16:17:54
4590
发布2019-07-03 16:17:54
举报
文章被收录于专栏:大话swift大话swift

1 Memory

config.prefer(MemoryKeyedCache.self, for: KeyedCache.self)

对于使用内存cache存储很简直接设置使用即可

2 DB

使用数据作为cache就比较麻烦--设置对应数据库 注册对应的表enty

2.1 选择数据作为存储

config.prefer(IACache.self, for: KeyedCache.self) //< 数据库作为cache

为了后续修改方便我们进行了alias ```typealias IACache = SQLiteCache```

其实内部也是进行了一层的alias```public typealias SQLiteCache = DatabaseKeyedCache<ConfiguredDatabase<SQLiteDatabase>>```

顺着内部走```public final class DatabaseKeyedCache<Database>: KeyedCache, Service

where Database: KeyedCacheSupporting```

可以看出作为DatabaseKeyedCache的database需要遵循KeyedCacheSupporting

于是就有了FluentSQLiteProvider文件中的

public typealias SQLiteCache = DatabaseKeyedCache<ConfiguredDatabase<SQLiteDatabase>> extension SQLiteDatabase: KeyedCacheSupporting { }

至此我们大致就了解db最为cache需要的条件了,之余具体实现我们不深究啦。

2.2 配置Model

db作为cache那一定需要的是Enty来实现啦,我们看看怎么来做

刚开始的时候我也是不知到这个名称系统是怎么玩的,于是猜测肯定是个Cache enty的结合体,于是就试了一下输入Cache编辑器提示了个CacheEntry于是点击去看了类型定义

Fluent model powering default implementation for KeyedCacheSupporting where self is QuerySupporting. You can use this type to interact with the cache table if it has been configured. public final class CacheEntry<Database>: Model where Database: QuerySupporting

看来猜测还是挺准确的 ?

接下来就是老套路啦

migrations.add(model: CacheEntry<SQLiteDatabase>.self, database: IADatabaseIdentifier)

3 Redis

config.prefer(RedisCache.self, for: Cache.self)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-10-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大话swift 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档