电商项目-缓存相关

 1.想要显示随机展示商品,又需要商品能更好的利用缓存,又兼顾其他重要排序,随机值可以取值范围20-200

 select DISTINCT(wcate.id),
        wcate.priority, MOD(wcate.id,30) suiji
 from wcate
 left join wsku on wsku.wcate_id = wcate.id
 inner join offer on wsku.id = offer.wsku_id
 where offer.app_show = 1
 order by wcate.priority asc, suiji
 limit 20 offset;

2.一个双缓存的设计

class JSONEncoder(json.JSONEncoder):
    def default(self, o):
        if isinstance(o, Decimal):
            return float(o)
        return json.JSONEncoder.default(self, o)


class WeCache:
    def __init__(self, url, params, interval=5):
        if not interval:
            interval = 5
        self.interval = interval
        self.url = url
        self.params = json.dumps(params, cls=JSONEncoder)
        self.minute = int(time.strftime('%M', time.localtime(time.time()))) // self.interval * self.interval
        self.key = self.build_key()

    def build_key(self):
        return self.url + '_' + self.params + '_' + str(self.minute)

    @staticmethod
    def parse(response):
        return json.loads(response.decode())

    @staticmethod
    def parse_list(response):
        return [r.decode() for r in response]


def we_cache(url, params, interval=5):
    '''
    用url+params组成的缓存,间隔interval单位是分钟,推荐范围是1-30分钟
    :param url: 前缀标识,推荐用url
    :param params:请求参数
    :param interval:单位是分钟,推荐范围是1-30分钟
    :return:

    #use demo:
    def f():
        return time.time()
    new_f = we_cache('url', 'params')(f)
    for i in range(3):
        print('res {}'.format(new_f()))
    '''

    def decorator(func):
        @wraps(func)
        def wrapper(*args, **kwargs):
            wc = WeCache(url, params, interval)
            value = r.get(wc.key)
            # 返回缓存值
            if value:
                return wc.parse(value)
            else:
                # 只允许一个来重建缓存
                if r.setnx(wc.key + '_' + "flag", 'mark'):
                    # bulid 缓存 response
                    response = func(*args, *kwargs)
                    cathe_response = json.dumps(response, cls=JSONEncoder) or ''
                    r.set(wc.key, cathe_response, ex=60 * wc.interval * 2)
                    r.expire(wc.key + '_' + "flag", 60)
                    return response
                else:
                    wc.minute = (wc.minute - wc.interval + 60) % 60
                    wc.key = wc.build_key()
                    value = r.get(wc.key)
                    # 这时候其实有两种选择,一是直接访问数据库,2是拒绝用户请求等到缓存完成后下次用户请求获取成功,这里选取的是1
                    if value:
                        return wc.parse(value)
                    else:
                        # raise ShopError(message='Other users are creating a new cache, please wait a moment.',
                        #                 error_code=501)
                        return func(*args, *kwargs)

        return wrapper

    return decorator

3.redis缓存的模糊查询和批量删除

keys "func:cate_list_new_*"

redis-cli -a '!QAZwemore' keys "func:cate_list_new_*" | xargs redis-cli -a '!QAZwemore' del

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值