首页 > 数据库 >Redis实现站内信

Redis实现站内信

时间:2024-09-20 12:22:59浏览次数:3  
标签:return err nil 实现 内信 Redis client

文章目录


前言

 站内信使用场景广泛:

  • 社交媒体:用户间私信、关注通知、好友请求等。
  • 在线学习:教师与学生沟通、课程提醒、成绩反馈等。
  • 电商平台:订单状态更新、促销信息、客户咨询回复等。
  • 企业管理:内部通知、员工互动、项目协作等。                         

使用站内信的原因包括:

  • 隐私保护:用户间的交流更加私密,避免公开曝光。
  • 即时沟通:提供实时或定时通知,确保信息迅速传达。
  • 用户参与:增强用户互动,提升平台的活跃度和用户粘性。
  • 信息集中:将所有沟通集中在一个平台,方便管理和查找历史记录。
  • 个性化体验:根据用户行为推送相关信息,提高用户满意度。
  • 减少噪音:相较于电子邮件,站内信可以减少信息干扰,提升重要信息的可见性

使用站内信的原因、场景很多,但是接下只是一个非常简单的,使用Redis来实现站内信的方法

一、站内信是什么?

站内信是指在特定平台或系统内(如社交媒体、论坛、在线商城等)用户之间进行的信息传递。与电子邮件不同,站内信通常只在该平台的环境中使用,无法发送到外部邮箱。

二、使用步骤

1.引入库

import (
    "fmt"
    "github.com/go-redis/redis"
    "log"
    "time"
)

2.信息写入Redis

 //添加站内信到Redis
func InsertMessageToRedis(client *redis.Client, userID string, message string) error {
    //使用LPUSH将站内信推入用户对应的列表
    _, err := client.LPush(fmt.Sprintf("user_messages:%s", userID), message).Result()
    if err != nil {
       return err
    }

    // 设置消息的过期时间,例如24小时
    err = client.Expire(fmt.Sprintf("user_messages:%s", userID), 24*time.Hour).Err()
    if err != nil {
       return err
    }

    return nil
}

3.读取信息从Redis

// 获取站内信到Redis
func GetMessageFormRedis(client *redis.Client, userID string) ([]string, error) {
    result, err := client.LRange(fmt.Sprintf("user_messages:%s", userID), 0, -1).Result()
    if err != nil {
       return nil, err
    }
    return result, nil
}

4. 运行文件main.go

func main() {
	client := RedisConfigInit()
	err := InsertMessageToRedis(client, "user123", "你有一条新的站内信")
	if err != nil {
		log.Fatal(err)
		return
	}

	formRedis, err := GetMessageFormRedis(client, "user123")
	if err != nil {
		return
	}
	for _, redi := range formRedis {
		fmt.Println(redi)
	}
}

5.运行结果:

标签:return,err,nil,实现,内信,Redis,client
From: https://blog.csdn.net/2303_79193769/article/details/142371197

相关文章

  • 高效数据移动指南 | 如何快速实现数据库 Oracle 到 Dameng 的数据同步?
    在现代企业中,数据无处不在,贯穿于各个业务环节和系统之间。无论是跨系统的数据集成、多地域的数据协同,还是实时应用的数据同步,数据的一致性和及时性都至关重要。在数字化转型的过程中,如何确保不同系统、地域、设备之间的数据同步,成为了企业面临的重要挑战。本专题将基于实践经验,从......
  • SimpleAISearch:C# + DuckDuckGo 实现简单的AI搜索
    最近AI搜索很火爆,有Perplexity、秘塔AI、MindSearch、Perplexica、memfree、khoj等等。在使用大语言模型的过程中,或许你也遇到了这种局限,就是无法获取网上最新的信息,导致回答的内容不是基于最新的信息,为了解决这个问题,可以通过LLM+搜索引擎的方式实现。以我之前开源的一个简单项......
  • typecho博客的相对地址实现
    typecho其中的博客地址,必须写上绝对地址,否则在迁移网址的时候会出现问题,例如页面记载异常修改其中的typecho\var\Widget\Options\General.php 中的165行左右,/**站点地址*/if(!defined('__TYPECHO_SITE_URL__')){$siteUrl=newForm\Element\Text('siteUrl',n......
  • 新版本QT的QMetaObject::invokeMethod实现
    corelib\kernel\qobjectdefs.htemplate<typenameT>inlineQTemplatedMetaMethodReturnArgument<T>returnArgument(constchar*name,T&t){return{qMetaTypeInterfaceForType<T>(),name,std::addressof(t)};}template<ty......
  • 轴对齐包围框-AABB-原理-代码实现
    前言我们先简单了解些轴对齐包围框(AABB)方法定义:轴对齐包围框是沿着坐标轴方向的长方体,包围点云的所有点。优点:计算简单,只需要找到点云的最小和最大坐标值,然后构建长方体。缺点:对于倾斜或旋转的物体,AABB往往不能紧密包围,容易出现较多的空白区域。后面我将从算法原理中......
  • 在ARM开发板上实现2048小游戏
     event.h屏幕点击事件.h文件:获取屏幕的xy坐标,获取手指滑动的方向,获取点击事件。#ifndef__EVENT_H_#define__EVENT_H_#include<stdio.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<unistd.h>#include<dirent.h>#inclu......
  • 批处理实现电脑微信多开
    话不多说了,电脑想多开几个微信,拿来做别的用处,直接上批处理脚本了,test.bat,记得把原来的微信给关掉了,然后再点击批处理程序,就可以多开微信了@echooffstart"""C:\ProgramFiles(x86)\TenCEnt\WeChat\WeChat.exe"start"""C:\ProgramFiles(x86)\Tencent\WeChat\WeChat.exe"ex......
  • 国产linux系统(银河麒麟,统信uos)使用 PageOffice 国产版实现前端框架内置对话框在Word中
    PageOffice国产版:支持信创系统,支持银河麒麟V10和统信UOS,支持X86(intel、兆芯、海光等)、ARM(飞腾、鲲鹏、麒麟等)、龙芯(LoogArch)芯片架构。本示例关键代码的编写位置Vue+Springboot注意本文中展示的代码均为关键代码,复制粘贴到您的项目中,按照实际的情况,例如文档路径,用户名等做......
  • 11 UML中的逻辑视图、进程视图、实现视图、部署视图
    UML(UnifiedModelingLanguage,统一建模语言)是一种用于对软件密集系统进行可视化建模的标准语言。在UML中,系统可以从不同的角度进行描述,这些不同的角度被称为视图。具体来说,UML中的逻辑视图、进程视图、实现视图和部署视图分别代表了系统的不同方面。1.逻辑视图(LogicalView)定义......
  • 基于Java中的SSM框架实现数据结构课堂考勤管理平台项目【项目源码+论文说明】
    基于java中的SSM框架实现数据结构课堂考勤管理平台演示【内附项目源码+LW说明】摘要高校的不断扩张让在校学生数量不断的增加,对于教师和管理人员的需求也在不断地增强,对日常的学生考勤管理的工作量也在日益增加,传统的人工点名签到的考勤管理模式已经给无法适用于当前高校......