<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>中间件 on 飞乐</title><link>https://www.feilewu.cn/tags/%E4%B8%AD%E9%97%B4%E4%BB%B6/</link><description>Recent content in 中间件 on 飞乐</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Fri, 27 Sep 2024 19:10:52 +0800</lastBuildDate><atom:link href="https://www.feilewu.cn/tags/%E4%B8%AD%E9%97%B4%E4%BB%B6/index.xml" rel="self" type="application/rss+xml"/><item><title>Redis笔记-数据类型</title><link>https://www.feilewu.cn/posts/halo-posts/redis%E7%AC%94%E8%AE%B0-%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B/</link><pubDate>Fri, 27 Sep 2024 19:10:52 +0800</pubDate><guid>https://www.feilewu.cn/posts/halo-posts/redis%E7%AC%94%E8%AE%B0-%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B/</guid><description>&lt;h2 id="基本数据类型及应用场景"&gt;基本数据类型及应用场景&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;类型&lt;/th&gt;
&lt;th&gt;简介&lt;/th&gt;
&lt;th&gt;特性&lt;/th&gt;
&lt;th&gt;场景&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;String(字符串)&lt;/td&gt;
&lt;td&gt;二进制安全&lt;/td&gt;
&lt;td&gt;可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M&lt;/td&gt;
&lt;td&gt;&amp;mdash;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hash(字典)&lt;/td&gt;
&lt;td&gt;键值对集合,即编程语言中的Map类型&lt;/td&gt;
&lt;td&gt;适合存储对象,并且可以像数据库中update一个属性一样只修改某一项属性值(Memcached中需要取出整个字符串反序列化成对象修改完再序列化存回去)&lt;/td&gt;
&lt;td&gt;存储、读取、修改用户属性&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;List(列表)&lt;/td&gt;
&lt;td&gt;链表(双向链表)&lt;/td&gt;
&lt;td&gt;增删快,提供了操作某一段元素的API&lt;/td&gt;
&lt;td&gt;1,最新消息排行等功能(比如朋友圈的时间线) 2,消息队列&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Set(集合)&lt;/td&gt;
&lt;td&gt;哈希表实现,元素不重复&lt;/td&gt;
&lt;td&gt;1、添加、删除,查找的复杂度都是O(1) 2、为集合提供了求交集、并集、差集等操作&lt;/td&gt;
&lt;td&gt;1、共同好友 2、利用唯一性,统计访问网站的所有独立ip 3、好友推荐时,根据tag求交集,大于某个阈值就可以推荐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sorted Set(有序集合)&lt;/td&gt;
&lt;td&gt;将Set中的元素增加一个权重参数score,元素按score有序排列&lt;/td&gt;
&lt;td&gt;数据插入集合时,已经进行天然排序&lt;/td&gt;
&lt;td&gt;1、排行榜 2、带权重的消息队列&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://pic.feilewu.cn/uploads/2021/04/20/98105977-58e24f050b6ba.png"&gt;&lt;/p&gt;
&lt;h3 id="字符串string"&gt;字符串（String）&lt;/h3&gt;
&lt;h4 id="设置值"&gt;设置值&lt;/h4&gt;
&lt;p&gt;set命令:为键设置值.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;set key value
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;setex命令:为键设置值,并设置秒级的过期时间.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;setex key value seconds
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;setpx命令:为键设置值,并设置毫秒秒级的过期时间.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;setpx key value millisecond
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;setnx命令:向键设置值前判断键是否存在,不存在则设置值存在则不设置.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;setnx key value
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;setxx命令:与setnx相反,向键设置值前判断键是否存在,存在则设置值存在则不设置.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;setxx key value
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;setnx和setxx的使用场景:由于redis是单线程命令处理机制,如果多个客户端同时向redis服务使用setnx命令也只会有一个客户端执行成功.setnx可以用于分布式锁的一个解决方案.&lt;/p&gt;
&lt;h4 id="计数"&gt;计数&lt;/h4&gt;
&lt;p&gt;incr命令:用于对键的值进行自增操作,返回结果为三种:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;值不是整数,返回错误.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;值是整数,返回自增后的结果.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;值不存在,按照值为&lt;code&gt;0&lt;/code&gt;自增,返回&lt;code&gt;1&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;incr key
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;incrby命令:用于对键的值进行指定自增量的自增操作,返回结果与incr相同.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;incrby key
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;incrbyfloat命令:用于对键的值进行指定浮点型自增量的自增操作.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;incrbyfloat key
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;decr命令:用于对键的值进行自减操作.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;decr key
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;decrby命令:用于对键的值进行指定值进行减值操作.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;decrby key
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;append命令:用于对键的值进行追加操作,返回追加后的值的得长度.&lt;/p&gt;</description></item></channel></rss>