go redis 스트림 메시지 대기열 : user_id 유형 변환 문제를 영리하게 해결합니다.
Go 및 Redis 스트림을 사용하여 메시지 대기열을 구축 할 때는 user_id
와 같은 정수 유형의 전환 문제가 종종 개발자를 괴롭 힙니다. 이 기사는이 문제를 심층적으로 탐색하고 효과적인 솔루션을 제공합니다.
응용 프로그램 user_id
(정수 유형)가 포함 된 데이터를 redis 스트림에 작성해야한다고 가정합니다. 다음과 같은 문제가 발생할 수 있습니다.
질문 설명 :
Redis Stream에 직접 글을 쓰면 user_id
읽을 때 문자열 유형이됩니다. 예를 들어:
쓰기 : xadd mystream * user_id 123
읽기 : xread block 0 streams mystream $
( user_id
읽기는 문자열 "123")
원인 분석 :
Redis는 모든 데이터의 기본 스토리지에서 문자열입니다. 정수를 작성하더라도 Redis는 문자열 저장소로 변환합니다. 따라서 읽을 때 자연스럽게 얻는 것은 문자열 유형입니다.
솔루션 : 직렬화 및 사막화
데이터 유형의 무결성을 유지하려면 Redis에 글을 쓰기 전에 직렬화하고 읽은 후에는 실질화해야합니다. 직렬화 및 사막화에 JSON을 사용하는 것이 좋습니다.
다음은 JSON을 사용 하여이 문제를 해결하는 방법을 보여주는 샘플 코드입니다.
패키지 메인 수입 (수입) "인코딩/json" "FMT" "github.com/go-redis/redis/v8" )) 유형 Message Struct { userId int`json : "user_id"` // ... 다른 필드 } func main () { 클라이언트 : = redis.newclient (& redis.options { Addr : "Localhost : 6379", }) // 데이터 메시지 : = 메시지 {userId : 123} jsondata, err : = json.marshal (메시지) err! = nil {인 경우 공황 (err) } err = client.xadd (& redis.xaddargs { 스트림 : "mystream", 값 : map [string] 인터페이스 {} { "data": jsondata, // JSON 데이터를 값으로 저장}, }). err () err! = nil {인 경우 공황 (err) } // 데이터 스트림 읽기, err : = client.xread (& redis.xreadargs { 스트림 : [] 문자열 { "mystream", "0"}, 블록 : 0, }).결과() err! = nil {인 경우 공황 (err) } _, 메시지 : = 범위 스트림 [0] .messages { var 수신 메시지 메시지 json.unmarshal ([] byte (message.values [ "data"]. (string)) 및 수신기) // deserialize json data fmt.printf ( "수신 된 사용자 ID : %d \ n", receptionMessage.userid) } }
이 코드는 먼저 Message
구조를 JSON 문자열로 직렬화 한 다음 JSON 문자열을 Redis 스트림에 저장합니다. 읽을 때 JSON 문자열을 Message
구조로 되돌려 보내서 정수 유형의 user_id
복원합니다. 이를 통해 Redis에서 저장 및 읽기 동안 데이터의 유형 일관성을 보장합니다. 이 예제가 Go Redis 스트림 메시지 큐에서 유형 변환 문제를 효과적으로 해결하는 데 도움이되기를 바랍니다.
위 내용은 Redis Stream을 사용하여 GO Language에서 메시지 대기열을 구현할 때 User_ID 유형 변환 문제를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

Redis是现在最热门的key-value数据库,Redis的最大特点是key-value存储所带来的简单和高性能;相较于MongoDB和Redis,晚一年发布的ES可能知名度要低一些,ES的特点是搜索,ES是围绕搜索设计的。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了关于redis的一些优势和特点,Redis 是一个开源的使用ANSI C语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式存储数据库,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis Cluster集群收缩主从节点的相关问题,包括了Cluster集群收缩概念、将6390主节点从集群中收缩、验证数据迁移过程是否导致数据异常等,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis实现排行榜及相同积分按时间排序,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了关于原子操作中命令原子性的相关问题,包括了处理并发的方案、编程模型、多IO线程以及单命令的相关内容,下面一起看一下,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis实现排行榜及相同积分按时间排序,本文通过实例代码给大家介绍的非常详细,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了bitmap问题,Redis 为我们提供了位图这一数据结构,位图数据结构其实并不是一个全新的玩意,我们可以简单的认为就是个数组,只是里面的内容只能为0或1而已,希望对大家有帮助。

redis error就是redis数据库和其组合使用的部件出现错误,这个出现的错误有很多种,例如Redis被配置为保存数据库快照,但它不能持久化到硬盘,用来修改集合数据的命令不能用。


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전
