概念:Redis是一个用C语言开发的开源高性能键值对数据库。特点:数据之间没有必然联系。内部使用单线程机制进行工作。高性能多种数据类型支持string类型String列表类型Listhash类型Map集合类型Set有序集合类型SortedSet持久化支持应用场景加速查询热点数据;如:热点产品、热点新闻、热点资讯等高流量信息。任务队列;如:秒杀、抢购、购票等即时信息查询;如:排行榜等时效性信息控制;如:验证码、投票控制等分布式数据共享;如:分布式架构中的session等。消息队列分布式锁的基本数据类型:String单个字符串类型的存储空间为512MBstring基本操作添加或修改数据setkeyvalue获取数据getkey删除数据delkey设置过期时间(默认单位为秒)expirekeysecond追加信息在初始值后追加keyvalue添加/修改多条数据msetkey1value1key2value2...获取多条数据mgetkey1key2...获取字符串长度strlenkey设置key生命周期控制生命周期setexkeysecondsvalue(seconds)psetexkeymillisexxondsvalue(milliseconds)key设置协议同上数据库中的表-主键-字段一一对应表名主键名主键值字段名eg1orderid443523454nameeg2equireid435432543typeeg3newsid45435454title基本数据类型:Hash存储要求:排列一系列存储数据,便于管理,典型应用存储对象信息存储结构:一个存储空间存储多个key值对数据哈希类型:底层采用哈希表结构实现数据存储。优化哈希存储结构。如果字段数少,存储结构优化为类数组结构。如果字段数较多,存储结构采用HashMap结构散列类型。基本操作添加/修改数据hsetkeyfieldvalue获取数据hgetkeyfieldhgetallkey删除数据hdelkeyfield[field2...]添加或删除多条数据hmsetkeyfield1value1field2value2...获取多条数据hmgetkeyfield1field2...获取哈希表的字段个数hlenkey获取是否为指定字段存在于哈希表hexistskeyfield获取哈希表中使用的字段名或字段值hkeyskeyhvalueskey设置指定字段的数值数据并增加指定范围的值ldincrement如果键值下的字段存在,则不执行任何操作。如果键值下的字段不存在,则将其添加到hsetnxkeyfieldvalue中。hash类型数据操作注意事项hash类型下的值只能存储字符串,不允许存储其他数据类型。没有嵌套现象。未获取到,对应值为(nil)每个hash存储的键值对上限为$$2^{32}-1$$键值对hash类型与对象的存储形式非常接近,对象属性可以灵活删除但是,哈希设计的初衷并不是为了存储大量的对象。切记不要滥用,更不能将hash当做对象列表使用hgetall操作获取所有属性。如果内部字段过多,遍历整体数据的效率会很低,有可能成为数据访问瓶颈应用场景电商网站购物车设计与实现基本数据类型:列表数据存储要求:store多个数据,并区分数据进入存储的顺序Jon要求的存储结构:一个存储空间存储多个数据,数据可以体现进入顺序列表类型:保存多个数据,底层使用双向链表存储实现链表类型的结构是一个双向链表,存储在链表的基本操作中添加/修改数据lpushkeyvalue1value2[value3]...//从链表左边的链表边添加rpushkeyvalue1value2[value3]...//从链表右侧添加和获取数据lrangekeystartstop//指定链表起止位置的值//获取长度未知的链表类型时,可以使用if你要查看所有的值-1表示倒数第二个thespecifiedtime(blockingdataacquisition)blpopkey1[key2]timeout//在指定时间内取出并移除key值对应的值。如果超时未取出key值对应的值,则返回空值(nil)。如果在等待期间没有其他客户端添加key的值,那么就会执行操作任务队列。brpopkey1[key2]timeout移除指定数据lremkeycountvaluelist类型数据操作注意事项列表中存储的数据都是字符串类型,总数据容量限制最多2^32-1个元素列表有索引的概念,但是在操作数据时,它通常使用一个队列以栈的形式入队和出队,或者以栈的形式进行出栈和出栈操作,获取所有操作结束数据的索引,并设置为-1。列表可以对数据进行分页操作。通常,第一页的信息来自列表,第二页及更多数据信息通过数据库查询加载基本数据类型:集合存储要求:存储大量数据,提供更高的查询效率存储结构:有能力的保存大量数据,高效的内部存储机制,便于查询集合类型:与hash存储结构完全一样,只存储key,不存储value(nil),value不允许为空.set存储结构是string类型的无序集合,内部存储是hash存储结构,所以添加、查找、删除的复杂度为O(1)set基本操作添加不重复数据saddkeyvalue获取所有存储的数据smemberskey删除数据stremkeymember1[member2]获取采集到的数据总数集合apopkey两个集合的交、并、差sinterkey1[key2]sunionkey1[key2]adiffkey1[key2]求两个集合的交、并、差并存入指定集合类型不允许重复数据。如果添加的数据已经存在于集合中,则只保留一份。虽然set和hash有相同的存储结构,但是不能启用hash中存储值的空间。基本数据类型:sortedSet存储需求:数据排序为了方便数据的展示效果,需要提供一种根据自身特点进行排序的方式。存储结构:可以保存排序的数据存储类型:在集合的存储结构中添加可排序的字段。zrangekeystartstop[witchscores]zrevrangekeystarstop[witchscores]删除数据zremkeymember[member...]按条件查询数据zrangebyscorekeyminmax[withscores][limit]zrevrangebyscorekeymaxmin[withscores]有条件地删除数据zremrangebyrankkeystartstop//startstop表示索引的起止位置zremrangebyscorekeyminmax//minmax表示排序的最小到最大的位置得到集合数据的个数zcardkeyzcountkeyminmax集合交集运算zinterstoredestinationnumkeyskey[key...]zunionstoredestinationkey[键..]
