❝이 기사에서 지식 포인트 학습 Redis의 5가지 주요 데이터 유형: 문자열, 해시, 목록, 세트, sorted_set 5대 유형별 지원 시나리오
❞
❝Kaka는 로드맵을 정리하여 인터뷰 가이드를 작성하였고, 이 로드맵에 따라 기사 작성을 준비하고 있습니다. 이후 추가되지 않았던 지식 포인트가 추가되는 것으로 확인되었습니다. 또한 귀하의 파트너가 참여하여 도움을 추가할 수 있기를 기대합니다. 댓글 섹션에서 만나요!
❞
데이터 추가/수정 : <code style="overflow-wrap: break-word; margin: 0px 2px; font-family: " operator mono consolas monaco menlo monospace word-break: break-all color: rgb background: rgba padding: border-radius: height: line-height:>set key value
获取数据:get key
删除数据:del key
添加 / 修改多个数据:mset key value key1 value1
获取多个数据:mget key key1
del 키
🎜여러 데이터 추가/수정: 🎜🎜여러 데이터 가져오기: <code style="overflow-wrap: break-word; margin: 0px 2px;font-family: " operator mono consolas monaco menlo monospace word-break : rgb rgba>mget key key1
🎜ㅋㅋㅋ 단어 나누기: 전체 나누기; 색상: rgb(53, 148, 247); 배경: rgba(59, 170, 250, 0.1); 테두리 반경: 2px; : 22px;">키 값 추가
append key value
设置数值增加指定范围的值:incr key 默认每次加1 | incrby key value 每次新增value
设置数据减少指定范围:decr key | decrby key value 跟新增是一回事
「应用场景」
控制数据库表主键id,为数据库表提供主键生成策略,保证数据表主键的一致性。
设置过期时间:setex key seconds value
设置数值增加指정范围적值:incr 키 默认每次加1 | incrby 키 값 每次新增value
设置数据减少指정范围:decr 키 | decrby 키 값 跟新增是一回事
「应用场景」
控 조절数据库表主键id 为数据库表換主键生成策略,保证数据表主键的一致性。
setex 키 초 값
🎜🎜🎜「应用场景」🎜🎜🎜实现限제时间投票功能:例如一个微信一个时可以投一次
实现热点信息:例如电商行业热门商product、新闻网站热门new闻🎜Weibo big V 홈페이지는 방문 빈도가 높고 팬 수, 팔로어 수 및 Weibo 수를 수시로 업데이트해야 합니다. 이는 빈도가 높은 정보이며, 이를 해결하기 위해 Redis의 문자열 형태를 사용할 수 있습니다. Redis에서 사용자의 기본 키와 속성을 키 값으로 사용하여 사용자 정보를 설정합니다. 여기서 키 명명 규칙(테이블 이름 + 기본 키 + 기본 키 값 + 필드: 필드 값)에 대해 간략하게 설명해야 합니다. 이러한 규칙에 따라 이름을 지정하면 우리의 핵심 가치를 매우 잘 관리할 수 있습니다.
다른 방법으로 구현할 수도 있습니다. 즉, 구조를 사용하여 키를 직접 따르는 것입니다.위의 두 가지 방법을 구현할 수 있지만 첫 번째 방법은 어떤 값이든 쉽게 관리할 수 있다는 것입니다. 비즈니스 시나리오에 따라 모든 것을 한 번 변경해야 하며 정기적으로 새로 고치면 됩니다.
hset key field value
获取数据:hget 키 필드 > | <code style="overflow-wrap: break-word; 여백: 0px 2px; 글꼴 계열: " operator mono consolas monaco menlo monospace word-break: break-all rgb rgba>hgetall 키
hget key field
| hgetall key
删除数据:hdel key field field1
添加 / 修改多个数据:hmset key field value field1 value1
获取多个数据:hmget key field field1
获取表中字段数量:hlen key
获取表中是否存在某个字段:hexists key field
获取hash表中所有的字段值:hkeys key
hdel 키 필드1
🎜添加 / 修改多个数据:hmset 키 필드 값 field1 값1
🎜🎜获取多个数据:hmget 키 필드 field1
🎜🎜获取表中字段数용량:hlen 키
🎜🎜获取表中是否存在某个字段:hexists 키 필드
🎜hkeys 키
🎜获取hash表中所유적문자段值:<code style="overflow-wrap: break-word; margin: 0px 2px; font-family: " operator mono consolas monaco menlo monospace word-break: break-all color: rgb background: rgba padding: border-radius: height: line-height:>hvals key
设置指定字段的数值增加指定范围的值:hincrby key field increment
| hincrbyfloat key field increment
此图来源于网络非自制,只是模拟购物车场景在上图中,我们可以看到购物车里的信息,下来咱们使用redis来对这个购物车的实现。
这里实现了一个添加购物车和获取购物车,keys的命名为 表名+主键+主键值在上图中,我们会有一个问题就是商品信息存储会大量重复,所有我们也需要将商品单独给一直hash。如下图,只存储商品id这里提供了俩种设置方式,一种是设置多个字段,一种是直接存储为json。信息不经常变动的话可以使用json给大家在提供一个方法hsetnx key field value
设置指定字段的数值增加指定范围的值:hincrby 키 필드 증분
| hincrbyfloat 키 필드 증분
h2 data-tool="mdnice编辑器" style="margin-top: 30px; margin-bottom: 15px; padding: 0px; color: black; 글꼴 크기: 22px; border-bottom: 4px solid rgb(64, 184 , 250);">2-3 해시业务场景 购물车
hsetnx 키 필드 값
, 如果有则不进行添加,没有则添加。操작품🎜🎜데이터 저장 요구 사항: 여러 데이터를 저장하고 데이터의 저장 공간 순서를 구분합니다. 필수 데이터 구조 : 하나의 저장공간에 다수의 데이터가 저장되며, 입력순서는 데이터를 통해 반영 가능 목록 유형: 여러 데이터 저장, 하위 계층은 이중 연결 목록 저장 구조를 사용하여 구현됩니다
데이터 추가/수정: lpush 키 값 값1
| rpush 키 값 값1
lpush key value value1
| rpush key value value1
获取数据:lrange key start end
| lindex key index
| llen key
删除数据:rpop key
| lpop key
lrange 키 시작 끝
| lindex 키 인덱스
| llen 키
🎜🎜데이터 삭제: rpop 키
| lpop 키
🎜지정된 시간 내에 데이터 가져오기 및 제거: blpop key1 key2 timeout | brpop key1 key2 timeout
이 기능은 단순히 사례를 작성합니다. 이해
왼쪽의 터미널 명령이 실행된 후 삭제된 데이터를 반환하기 위해 30초를 기다립니다
오른쪽의 add 명령이 실행되면 왼쪽이 삭제된 데이터를 직접 반환합니다
위에서 우리는 목록의 기본 동작을 알고 있습니다. lpop 키 또는 rpop 키를 실행하면 do 또는 오른쪽에서 삭제할 수 있지만 이제는 친구들이 좋아하는 시나리오가 있습니다. 업무용으로 사용되며, 중간부터 데이터가 삭제됩니다. 사례는 아래와 같습니다
먼저 list5에 a b c d를 추가합니다. 그런 다음 c를 제거하십시오. 확인해보니 bd만 남았네요
새로운 저장 요구 사항: 대용량 데이터를 저장하고 쿼리 편의성을 높여 효율성 향상 필수 저장 구조: 대용량 데이터 저장 가능, 효율적인 내부 저장 메커니즘, 쿼리 용이 집합 유형: 해시 저장 구조와 완전히 동일합니다. 값(nil)이 아닌 키만 저장하며 값은 반복될 수 없습니다.
데이터 추가/수정: 키 멤버 멤버1 추가
sadd key member member1
获取数据:smembers key
删除数据:srem key member1
获取集合数据总量:scard key
smembers 키
🎜🎜 데이터 삭제: srem key member1
🎜🎜 총 수집 데이터 양 가져오기: 스카드 키
🎜ㅋㅋㅋ 모두; 색상: rgb(53, 148, 247); 배경: rgba(59, 170, 250, 0.1); 테두리 반경: 2px; 핵심 멤버
随机获取集合中指定数量的数据:srandmember key count
随机获取集合中某个数据并将改数据集移除集合:spop key
재박리插入图文描述
spop 키
🎜🎜🎜4-3 세트类型业务场景推荐信息🎜🎜🎜🎜🎜随机推送热点信息、热点新闻, 热卖旅游, 应app 推荐, 关注推荐等🎜🎜由于最近咔咔在写discuz,这个案例就以实现关注推荐。🎜사례 1: 특정 추천 메커니즘에 따라 해당 사용자를 세트에 저장한 다음 매번 추천이 필요한 사용자 2명을 무작위로 얻습니다
사례 2: 특정 추천을 기반으로 함 메커니즘은 해당 사용자를 세트에 저장하며 날짜를 기준으로 매일 추천되는 사용자는 반복될 수 없습니다
두 집합의 교집합, 합집합, 차이
<span style="display: block; background: url(https://my-wechat.mdnice.com/point.png); height: 30px; width: 100%; background-size: 40px; background-repeat: no-repeat; background-color: #272822; margin-bottom: -7px; border-radius: 5px; background-position: 10px 10px;"></span><code class="hljs" style="overflow-x: auto; padding: 16px; color: #ddd; display: -webkit-box; font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; font-size: 12px; -webkit-overflow-scrolling: touch; letter-spacing: 0px; padding-top: 15px; background: #272822; border-radius: 5px;"><span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">sinter</span> <span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">key</span> <span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">key1</span><br/><span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">sunion</span> <span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">key</span> <span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">key1</span><br/><span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">sdiff</span> <span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">key</span> <span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">key1</span><br/></code>
두 집합의 교집합, 합집합, 차이가 지정된 집합에 저장됩니다
<span style="display: block; background: url(https://my-wechat.mdnice.com/point.png); height: 30px; width: 100%; background-size: 40px; background-repeat: no-repeat; background-color: #272822; margin-bottom: -7px; border-radius: 5px; background-position: 10px 10px;"></span><code class="hljs" style="overflow-x: auto; padding: 16px; color: #ddd; display: -webkit-box; font-family: Operator Mono, Consolas, Monaco, Menlo, monospace; font-size: 12px; -webkit-overflow-scrolling: touch; letter-spacing: 0px; padding-top: 15px; background: #272822; border-radius: 5px;"><span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">sinterstore</span> <span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">destination</span> <span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">key1</span> <span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">key2</span><br/><span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">sunionstore</span> <span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">destination</span> <span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">key1</span> <span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">key2</span><br/><span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">sdiffstore</span> <span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">destination</span> <span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">key1</span> <span class="hljs-selector-tag" style="color: #f92672; font-weight: bold; line-height: 26px;">key2</span><br/></code>
사례: 정보의 공통 친구를 채굴해야 합니다. . 예를 들어 WeChat 공개 계정에서 공동으로 팔로우하는 친구 수, 새 친구 추가를 위한 QQ의 추천 메커니즘, 사용자의 직접 연결에 대한 심층 탐색
위 사례를 기반으로 차이 세트를 사용하여 QQ의 친구를 실현할 수 있습니다. 서로 알고 있을 가능성이 높습니다.
PV는 문자열 형식의 통계를 직접 사용할 수 있습니다.
UV와 IP는 독립적이고 반복되지 않으며, 세트를 사용하여 작동하다 .
우리는 위에서 세트가 반복될 수 없는 특성을 가지고 있다는 것을 알고 있습니다. 이를 기반으로 이 기능을 쉽게 구현할 수 있습니다. 그런 다음 흉터 키를 사용하여 수량을 계산합니다.
UV가 독립적인 방문자인 경우에도 로컬 쿠키를 사용하여 기록할 수 있습니다. 유형 중 정렬을 지원하는 것은 없습니다. 아래에서 살펴볼 sorted_set 유형은 빅 데이터 저장과 정렬 기능을 모두 지원합니다
zrevrange 키 시작 중지 <h2 data-tool="mdnice编辑器" style="margin-top: 30px; margin-bottom: 15px; padding: 0px; color: black; font-size: 22px; border-bottom: 4px solid rgb(64, 184, 250);"></h2>
<p data-tool="mdnice编辑器" style="padding-top: 8px; padding-bottom: 8px; line-height: 26px; margin-top: 10px; margin-bottom: 10px; font-size: 14px; word-spacing: 2px;">删除数据:<code style="overflow-wrap: break-word; 여백: 0px 2px; 글꼴-가족: " operator mono consolas monaco menlo monospace word-break: break-all rgb rgba>zrem 키 멤버 ><code style="overflow-wrap: break-word; margin: 0px 2px; font-family: " operator mono consolas monaco menlo monospace word-break: break-all color: rgb background: rgba padding: border-radius: height: line-height:>zrem key member
按条件获取数据:zrangebyscore key min max limit | zrevrangescore key max min
条件删除数据:zremrangebyrank key start stop | zremrangebyscore key min max
获取集合数据总量:zcard key | zcount key min max
集合交、并操作:zinterstore destination numkeys key | zunionstore destination numkeys key
(这个指令就不做演示了,可以自己查看文档。跟set有点类似,只不过会把所有交集的和给加起来。然后这里边有个numkeys这个参数是一共几个key进行计算 后边的key就需要几个)
获取数据对应的索引:zrank key member | zrevrank key member
socre值获取与修改:zscore key member | zincrby key increment member
相关推荐:《<a href="https://www.php.cn/redis/" target="_blank">redis教程</a>》
zrangebyscore 키 최소 최대 제한 | zrevrangescore 키 최대 최소값
🎜🎜条件删除数据:zremrangebyrank 키 시작 중지 | zremrangebyscore 키 최소 최대
🎜🎜获取集合数据总weight:zcard 키 | zcount 키 최소 최대
🎜🎜集合交、并操작곡:zinterstore 대상 numkeys 키 | zunionstore 대상 숫자 키 키
(这个指令就不做演示了,可以自己查看文档。跟set有点类似,只不过会把所有交集的和给加起来。然后这里边有个numkeys这个参数是一共几个key进行计算 后边的key就需要几个)🎜🎜获取数据对应的索引:zrank 키 멤버 | zrevrank 핵심 멤버
🎜🎜socre值获取与修改:zscore 핵심 멤버 | 아연rby 키 증분 멤버
🎜🎜redis教程》
🎜위는 Redis 데이터 유형에 대한 간략한 소개와 구체적인 적용에 대한 내용입니다. 다음 글에서는 구체적인 필요에 따라 실제 전투를 진행해보겠습니다.
❝배움에 대한 끈기, 블로깅에 대한 끈기, 공유에 대한 끈기는 카카가 경력 이후부터 지켜온 신념입니다. 거대한 인터넷에 올라온 카카의 글이 여러분에게 조금이나마 도움이 되기를 바랍니다. 다음 호에는 당신이 있습니다.
❞
위 내용은 Redis의 5가지 주요 데이터 유형과 애플리케이션 시나리오를 이해하는 기사 1개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!