欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

基于Redis无序集合如何实现禁止多端登录功能

程序员文章站 2022-11-21 14:51:34
前言 一个集合类型可以存储最多2^32 -1 个字符串 集合类型在redis内部使用值为空的散列表(hash table)实现,所以集合中的加入或删除元素等时间复杂...

前言

一个集合类型可以存储最多2^32 -1 个字符串

集合类型在redis内部使用值为空的散列表(hash table)实现,所以集合中的加入或删除元素等时间复杂度为o(1)。

集合具有元素唯一性。

本文主要给大家介绍了基于redis无序集合实现禁止多端登录的相关内容,下面话不多说了,来一起看看详细的介绍吧

应用背景

多个应用端假设名称叫做a和b,禁止用户从a b同时登录,a登录踢b,b登录踢a

实现思路

  • 设置两个无序集合a_set, b_set
  • a b 登录的时候执行
$redis->sadd('a_set',$user_id);//a登录
$redis->srem('b_set',$user_id);//踢b
$redis->sadd('b_set',$user_id);//b登录
$redis->srem('a_set',$user_id);//踢a

api获取数据之前判断该端的id是否在线(ab两个端的api是分开的)

if($redis->sismember('a_set',$user_id)){
 //true 
}else{
 //false
}

b判断

if($redis->sismember('b_set',$user_id)){
 //true
}else{
 //false
}

用到的方法

  • sadd key_set value 设置值到set中
  • sismember key_set value 判断值时候存在key_set里面
  • srem key_set value 移除指定值
  • smembers key_set 获取所有的value

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。