>데이터 베이스 >Redis >Redis의 5가지 주요 데이터 유형과 애플리케이션 시나리오를 이해하는 기사 1개

Redis의 5가지 주요 데이터 유형과 애플리케이션 시나리오를 이해하는 기사 1개

咔咔
咔咔원래의
2020-08-28 17:16:172160검색

이 기사에서 지식 포인트 학습 Redis의 5가지 주요 데이터 유형: 문자열, 해시, 목록, 세트, ​​sorted_set 5대 유형별 지원 시나리오

머리말

Kaka는 로드맵을 정리하여 인터뷰 가이드를 작성하였고, 이 로드맵에 따라 기사 작성을 준비하고 있습니다. 이후 추가되지 않았던 지식 포인트가 추가되는 것으로 확인되었습니다. 또한 귀하의 파트너가 참여하여 도움을 추가할 수 있기를 기대합니다. 댓글 섹션에서 만나요!

Redis의 5가지 주요 데이터 유형과 애플리케이션 시나리오를 이해하는 기사 1개
여기에 그림 설명 삽입

1. 문자열 유형

1-1 문자열 유형 데이터의 기본 동작

데이터 추가/수정 : <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;">키 값 추가

1-2 문자열类型 增减操작품

append key value

1-2 string类型 增减操作

设置数值增加指定范围的值:incr key 默认每次加1 | incrby key value 每次新增value设置数据减少指定范围:decr key | decrby key value 跟新增是一回事

「应用场景」

控制数据库表主键id,为数据库表提供主键生成策略,保证数据表主键的一致性。

1-3 string类型 时效操作

设置过期时间:setex key seconds value设置数值增加指정范围적值:incr 키 默认每次加1 | incrby 키 값 每次新增value设置数据减少指정范围:decr 키 | decrby 키 값 跟新增是一回事

「应用场景」

控 조절数据库表主键id 为数据库表換主键生成策略,保证数据表主键的一致性。

1-3 문자열类型 时效操작

🎜设置过期时间:setex 키 초 값🎜🎜🎜「应用场景」🎜🎜🎜实现限제时间投票功能:例如一个微信一个时可以投一次 实现热点信息:例如电商行业热门商product、新闻网站热门new闻🎜

1-4 문자열 유형 적용 시나리오

Weibo big V 홈페이지는 방문 빈도가 높고 팬 수, 팔로어 수 및 Weibo 수를 수시로 업데이트해야 합니다. 이는 빈도가 높은 정보이며, 이를 해결하기 위해 Redis의 문자열 형태를 사용할 수 있습니다. Redis에서 사용자의 기본 키와 속성을 키 값으로 사용하여 사용자 정보를 설정합니다. Redis의 5가지 주요 데이터 유형과 애플리케이션 시나리오를 이해하는 기사 1개여기서 키 명명 규칙(테이블 이름 + 기본 키 + 기본 키 값 + 필드: 필드 값)에 대해 간략하게 설명해야 합니다. 이러한 규칙에 따라 이름을 지정하면 우리의 핵심 가치를 매우 잘 관리할 수 있습니다. Redis의 5가지 주요 데이터 유형과 애플리케이션 시나리오를 이해하는 기사 1개

다른 방법으로 구현할 수도 있습니다. 즉, 구조를 사용하여 키를 직접 따르는 것입니다.

위의 두 가지 방법을 구현할 수 있지만 첫 번째 방법은 어떤 값이든 쉽게 관리할 수 있다는 것입니다. 비즈니스 시나리오에 따라 모든 것을 한 번 변경해야 하며 정기적으로 새로 고치면 됩니다. Redis의 5가지 주요 데이터 유형과 애플리케이션 시나리오를 이해하는 기사 1개

2. 해시 유형

2-1 해시 유형 데이터의 기본 작업

데이터 추가/수정:

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

2-2 hash类型数据的扩展操作

获取hash表中所有的字段值:hkeys key

删除数据:hdel 키 필드1 🎜添加 / 修改多个数据:hmset 키 필드 값 field1 값1🎜🎜获取多个数据:hmget 키 필드 field1🎜🎜获取表中字段数용량:hlen 키🎜🎜获取表中是否存在某个字段:hexists 키 필드🎜

2-2 해시 유형 확장 작업

🎜获取hash表中所有的字段值: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

2-3 hash业务场景之购物车

此图来源于网络非自制,只是模拟购物车场景Redis의 5가지 주요 데이터 유형과 애플리케이션 시나리오를 이해하는 기사 1개在上图中,我们可以看到购物车里的信息,下来咱们使用redis来对这个购物车的实现。

这里实现了一个添加购物车和获取购物车,keys的命名为  表名+主键+主键值Redis의 5가지 주요 데이터 유형과 애플리케이션 시나리오를 이해하는 기사 1개在上图中,我们会有一个问题就是商品信息存储会大量重复,所有我们也需要将商品单独给一直hash。如下图,只存储商品idRedis의 5가지 주요 데이터 유형과 애플리케이션 시나리오를 이해하는 기사 1개这里提供了俩种设置方式,一种是设置多个字段,一种是直接存储为json。信息不经常变动的话可以使用jsonRedis의 5가지 주요 데이터 유형과 애플리케이션 시나리오를 이해하는 기사 1개给大家在提供一个方法hsetnx key field valueRedis의 5가지 주요 데이터 유형과 애플리케이션 시나리오를 이해하는 기사 1개设置指定字段的数值增加指定范围的值: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 해시业务场景 购물车

此图来源于网络不自system,只是模拟购物车场景Redis의 5가지 주요 데이터 유형과 애플리케이션 시나리오를 이해하는 기사 1개上图中,我们可以看到购物车里的信息,下来咱们使用 redis来对这个购物车的实现。🎜🎜这里实现了一个添加购식물과获取购식물车,keys적命name为  表name+主键+主键值재고리插入图 Images描述上图中,我们会有一个问题就是商product信息存储会大复,所有我们也需要将商product单独给一直hash。如下图,只存储商품id변경되지 않은 정보以使사용jsonRedis의 5가지 주요 데이터 유형과 애플리케이션 시나리오를 이해하는 기사 1개给大家 提供一个방법hsetnx 키 필드 값, 如果有则不进行添加,没有则添加。操작품🎜🎜

3. 목록형

데이터 저장 요구 사항: 여러 데이터를 저장하고 데이터의 저장 공간 순서를 구분합니다. 필수 데이터 구조 : 하나의 저장공간에 다수의 데이터가 저장되며, 입력순서는 데이터를 통해 반영 가능 목록 유형: 여러 데이터 저장, 하위 계층은 이중 연결 목록 저장 구조를 사용하여 구현됩니다

3-1 목록 유형 데이터의 기본 작업

데이터 추가/수정: lpush 키 값 값1 | rpush 키 값 값1lpush 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 키🎜
Redis의 5가지 주요 데이터 유형과 애플리케이션 시나리오를 이해하는 기사 1개
여기에 그림 설명 삽입

3-2 목록 유형 데이터에 대한 확장 작업

지정된 시간 내에 데이터 가져오기 및 제거: blpop key1 key2 timeout | brpop key1 key2 timeout

이 기능은 단순히 사례를 작성합니다. 이해

왼쪽의 터미널 명령이 실행된 후 삭제된 데이터를 반환하기 위해 30초를 기다립니다

오른쪽의 add 명령이 실행되면 왼쪽이 삭제된 데이터를 직접 반환합니다Redis의 5가지 주요 데이터 유형과 애플리케이션 시나리오를 이해하는 기사 1개

3-3 목록 비즈니스 시나리오

위에서 우리는 목록의 기본 동작을 알고 있습니다. lpop 키 또는 rpop 키를 실행하면 do 또는 오른쪽에서 삭제할 수 있지만 이제는 친구들이 좋아하는 시나리오가 있습니다. 업무용으로 사용되며, 중간부터 데이터가 삭제됩니다. 사례는 아래와 같습니다

먼저 list5에 a b c d를 추가합니다. 그런 다음 c를 제거하십시오. 확인해보니 bd만 남았네요Redis의 5가지 주요 데이터 유형과 애플리케이션 시나리오를 이해하는 기사 1개

4. 세트형

새로운 저장 요구 사항: 대용량 데이터를 저장하고 쿼리 편의성을 높여 효율성 향상 필수 저장 구조: 대용량 데이터 저장 가능, 효율적인 내부 저장 메커니즘, 쿼리 용이 집합 유형: 해시 저장 구조와 완전히 동일합니다. 값(nil)이 아닌 키만 저장하며 값은 반복될 수 없습니다.

Redis의 5가지 주요 데이터 유형과 애플리케이션 시나리오를 이해하는 기사 1개
여기에 그림 설명을 삽입하세요

4-1 세트 유형 기본 데이터 연산

데이터 추가/수정: 키 멤버 멤버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; 핵심 멤버

Redis의 5가지 주요 데이터 유형과 애플리케이션 시나리오를 이해하는 기사 1개
sismember key member

Redis의 5가지 주요 데이터 유형과 애플리케이션 시나리오를 이해하는 기사 1개
Redis의 5가지 주요 데이터 유형과 애플리케이션 시나리오를 이해하는 기사 1개

4-2 set类型数据扩展操作

随机获取集合中指定数量的数据:srandmember key count

随机获取集合中某个数据并将改数据集移除集合:spop key재박리插入图文描述

4-2 set类型数据扩設操작품

随机获取集合中정량적 수량:srandmember 키 수

随机获取集合中某个数据并将改数据集移除集합:spop 키

🎜🎜🎜4-3 세트类型业务场景推荐信息🎜🎜🎜🎜🎜随机推送热点信息、热点新闻, 热卖旅游, 应app 推荐, 关注推荐等🎜🎜由于最近咔咔在写discuz,这个案例就以实现关注推荐。🎜

사례 1: 특정 추천 메커니즘에 따라 해당 사용자를 세트에 저장한 다음 매번 추천이 필요한 사용자 2명을 무작위로 얻습니다

Redis의 5가지 주요 데이터 유형과 애플리케이션 시나리오를 이해하는 기사 1개
여기에 그림 설명 삽입

사례 2: 특정 추천을 기반으로 함 메커니즘은 해당 사용자를 세트에 저장하며 날짜를 기준으로 매일 추천되는 사용자는 반복될 수 없습니다

Redis의 5가지 주요 데이터 유형과 애플리케이션 시나리오를 이해하는 기사 1개
여기에 그림 설명을 삽입하세요

4-4세트 유형 비즈니스 시나리오를 사용자 마이닝 관계

두 집합의 교집합, 합집합, 차이

<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>

Redis의 5가지 주요 데이터 유형과 애플리케이션 시나리오를 이해하는 기사 1개사례: 정보의 공통 친구를 채굴해야 합니다. . 예를 들어 WeChat 공개 계정에서 공동으로 팔로우하는 친구 수, 새 친구 추가를 위한 QQ의 추천 메커니즘, 사용자의 직접 연결에 대한 심층 탐색

위 사례를 기반으로 차이 세트를 사용하여 QQ의 친구를 실현할 수 있습니다. 서로 알고 있을 가능성이 높습니다.

4-5 세트형 비즈니스 시나리오는 웹 사이트의 PV, UV 및 IP 기록을 구현합니다.

PV는 문자열 형식의 통계를 직접 사용할 수 있습니다.

UV와 IP는 독립적이고 반복되지 않으며, 세트를 사용하여 작동하다 .

우리는 위에서 세트가 반복될 수 없는 특성을 가지고 있다는 것을 알고 있습니다. 이를 기반으로 이 기능을 쉽게 구현할 수 있습니다. 그런 다음 흉터 키를 사용하여 수량을 계산합니다.

UV가 독립적인 방문자인 경우에도 로컬 쿠키를 사용하여 기록할 수 있습니다. 유형 중 정렬을 지원하는 것은 없습니다. 아래에서 살펴볼 sorted_set 유형은 빅 데이터 저장과 정렬 기능을 모두 지원합니다Redis의 5가지 주요 데이터 유형과 애플리케이션 시나리오를 이해하는 기사 1개

5-1 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

Redis의 5가지 주요 데이터 유형과 애플리케이션 시나리오를 이해하는 기사 1개按条件获取数据: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>》

Redis의 5가지 주요 데이터 유형과 애플리케이션 시나리오를 이해하는 기사 1개按条件获取数据:zrangebyscore 키 최소 최대 제한 | zrevrangescore 키 최대 최소값🎜🎜条件删除数据:zremrangebyrank 키 시작 중지 | zremrangebyscore 키 최소 최대🎜🎜获取集合数据总weight:zcard 키 | zcount 키 최소 최대🎜🎜集合交、并操작곡:zinterstore 대상 numkeys 키 | zunionstore 대상 숫자 키 키(这个指令就不做演示了,可以自己查看文档。跟set有点类似,只不过会把所有交集的和给加起来。然后这里边有个numkeys这个参数是一共几个key进行计算  后边的key就需要几个)🎜🎜获取数据对应的索引:zrank 키 멤버 | zrevrank 핵심 멤버🎜🎜socre值获取与修改:zscore 핵심 멤버 | 아연rby 키 증분 멤버🎜🎜redis教程》🎜

Summary

위는 Redis 데이터 유형에 대한 간략한 소개와 구체적인 적용에 대한 내용입니다. 다음 글에서는 구체적인 필요에 따라 실제 전투를 진행해보겠습니다.

배움에 대한 끈기, 블로깅에 대한 끈기, 공유에 대한 끈기는 카카가 경력 이후부터 지켜온 신념입니다. 거대한 인터넷에 올라온 카카의 글이 여러분에게 조금이나마 도움이 되기를 바랍니다. 다음 호에는 당신이 있습니다.

위 내용은 Redis의 5가지 주요 데이터 유형과 애플리케이션 시나리오를 이해하는 기사 1개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.