1.使用Redis缓存的优化思路
redis有很多使用场景,我只使用一个场景:
1.1对于大量的数据读取,为了缓解数据库的压力,一些不常更改和频繁读取的数据存储在redis缓存中
总体思路如下:执行查询
1.2首先判断缓存中是否存在,如果存在,直接从Redis缓存中获取。
1.3如果Redis缓存不存在,实时读取数据库数据,同时写入缓存(并设置缓存失效时间)。
1.4缺点:如果直接修改数据库的数据而不更新缓存,读Redis缓存将是缓存失效时间内的错误数据。
2:Redis傻瓜安装
2.1双击执行redis-2.4.6-setup-64-bit.exe程序(下载地址:https://github.com/dmajkic/redis/downloads)
2.2您可以将此服务设置为windows系统服务:
2.3测试安装是否成功:
回到redis文件夹,找到redis-cli.exe文件,这是Redis客户端程序。打开,输入:
设置测试123
也就是说,在Redis中插入一段带有key test和值123的数据,然后继续输入:get test
获取按值保存的数据123。
如果想知道Redis中存储了多少条数据,可以使用:keys *进行查询:
3:ASP.NET使用Redis缓存的简单示例
3.1测试演示的结构
3.2添加参考
3.3将参数写入配置文件
appSettings add key=' WriteServerList '值=' 127 . 0 . 0 . 1:6379 '/add key=' ReadServerList '值=' 127 . 0 . 0 . 133606379 '/add key=' MaxWritePoolSize '值='60'/add key='MaxReadPoolSize '值='60'/add key='AutoStart '值='true'/Addkey='本地缓存时间'值=' 1800 '/
公共类RedisConfigInfo {公共静态字符串WriteServerList=configuration manager。AppSettings[' WriteServerList '];公共静态字符串ReadServerList=configuration manager。AppSettings[' ReadServerList '];public static int MaxWritePoolSize=Convert。至32(配置管理器。AppSettings[' MaxWritePoolSize ']);公共静态int MaxReadPoolSize=Convert。至32(配置管理器。AppSettings[' MaxReadPoolSize ']);公共静态int LocalCacheTime=Convert。至32(配置管理器。AppSettings[' LocalCacheTime ']);公共静态bool自动启动=配置管理器。AppSettings['自动启动']。等于('真')?真:假;}3.5 Connect Redis,以及其他一些操作类
公共类管理器{私有静态池披露管理器PRC///摘要//范龙佩范龙佩范龙佩//summary private static void create manager(){ string[]write server list=spliting string(redisconfiginfo).writeserverlist为",";string[]读取服务器列表=拆分字符串(redisconfiginfo ).readserverlist为",":prcm=新建pooldredisclientmanager(读取服务器列表,writeServerList,新redisclientmanager配置{ maxwritepoolsize=rediscofigureinfo).MaxWritePoolSize,maxreadpoolsize=rediscorprefinfo .MaxReadPoolSize,autostart=redisconfiginfo .AutoStart,});}私有静态字符串[]拆分字符串{返回strSource .分割(拆分).toa array();}////摘要//是云娥//summary public static ire defendent get client(){ if(PRC=null)create manager();返回中华人民共和国.GetClient():}////摘要//黄公子24安泰安泰安泰安泰安泰安泰安泰安泰安泰安泰安泰安泰安泰安泰安泰安泰安泰安泰安泰安泰安泰//摘要公共静态时间平移过期时间=时间平移公共静态时间盘从小时(24小时);///摘要//范琼?范琼,黄头发24安泰安泰安泰安泰安泰安泰安泰安泰安泰安泰安泰安泰安泰安泰安泰安泰安泰安泰安泰安泰安泰//summary///typeparam name=' T '/typeparam///param name=' key '/param///param name=' value '/param///param name=' redisclient '/param///return/返回公共静态bool sett(string key,T value,iredecentredisclient){ return redisclient .七(密钥、值、过期时间);}////摘要//鲁仲尼鲁仲尼列表(列表)何曰//summary////type param name=' t '/type param////param name=' key '何如biaodiguid/param///param name=' item '/param///param name=' redis client '/param public static void add 2 listt(string key,T item,ire discurrent re client){ var redis=redis client .ast();var列表=redis .列表[获取密钥(key)]:列表(列表)。添加(项目);}////摘要//何俊仁list////summary////type param name=' t '/type param///param name=' key '/param///param name=' redis client '/param///returns/returns public static irelisist(string key,ire discurrent redis client){ var redis=redis client .ast();返回里兹。列表[get key(key)]:}公共静态字符串get key(string key,字符串前缀=null) { if (string).isnullorempty(前缀)){ return ' burn : '键;} else { return ' burn : '前缀' : '键;} }3.6贺盛瑞贺盛瑞
表单id='表单1 ' runat='服务器' div ASP 3330标签runat='服务器' id=' lbtest '/ASP 3330标签ASP 3330按钮runat='服务器' id=' BTN 1 ' onclick=' BTN 1 _ click ' text='范龙佩(音译)'//div/form protected void BTN 1 _ click(对象发送者,事件参数e){ string username;//哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟,你好,我是朱庇特朱庇特朱庇特,阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云阿云重定向使用(var redisClient=重定向器)。getcclient()){ username=redisclient .Getstring('UserInfo_123 '):if(字符串)。IsNullOrEmpty(UserName)) //吴经熊先生什么都行朱庇特朱庇特,老年公民用户名='什么";重定向客户端设置字符串(' UserInfo_123 ',用户名,日期时间).现在。增加秒(10));lbtest(测试)。文字=':' "什么";返回;} lbtest .文字='Redis孟尝君用户名} }绿筠小姐
,范仲淹,范仲淹,1826年10哈哈哈
10范仲淹!范仲淹!范仲淹!范仲淹
朱塞佩朱塞佩朱塞佩朱塞佩,-你好-你好-你好,吴亚玲吴亚玲吴亚玲!