使用Redis完成抽奖功能


Redis集合简介

redis的集合数据类型,功能非常强大。说到集合的话,你可能想到高中数学上的集合。其实他们本就是一个意思。redis集合里面可以存放很多字符串(元素),redis最多支持2的32次方减1个元素,但是集合里的元素都是唯一的,不会有重复。和数学里集合一样,redis也支持交集,并集以及差集。

用它可以完成许多有意思的功能。最常见的就是标签功能了,可能A用户的标签有“动漫”、”运动“、”二次元“,B用户的标签有”运动“、”旅游“、”篮球“。那么,使用集合的并集,就能知道他们的共同标签是什么。另外,当系统知道用户的标签后,就可以给他们推荐相关的广告或产品。除此之外,还要许多有意思的功能它也能实现。今天,我们来看看如何使用Reids实现抽奖功能。

sRandMember、sPop

这两个命令功能非常相似,都是从集合中返回一个元素值。不同的是,sRandMember不会从集合中删除返回的元素,但是sPop会删除。这两个命令可以分别实现不同的抽奖算法。

比如,集合中有100个元素,值从数字1到数字100.我们定义抽到的是数字1的话,即表示中奖。

使用sRandMember的话,不管之前抽过多少次,下次抽中的概率都是1%。而使用sPop的话,则每次抽中的概率都不一样。第一个人抽中概率是1%,当第一个人没抽中的话,第二个人抽中概率就是1/99,以此类推。

抽奖功能实现

抽奖功能实现其实就只有两步,首先设置抽奖概率,即往集合中添加元素,然后就是开始抽奖了。

OMPOSE AI OMPOSE AI

一款免费的 Chrome 插件,可加快您的写作速度,让您可以在任何地方使用自动完成功能,并减少打字时间。

OMPOSE AI 18 查看详情 OMPOSE AI

设置抽奖概率,伪代码如下:

/**
 * $key 集合键名
 * $cnt 集合元素数量
 */
function setProb($key, $cnt)
{
    for ($i = 1; $i <= $cnt; $i ++) {
        $redis->sAdd($key, $i);
    }
}

抽奖,伪代码如下:

/**
 * string $key 集合键名
 * int $stand 小于等于该数即表示抽中
 * int $type 抽奖算法,1表示使用sRandMember,2的话
 *           使用sPop
 */
function draw ($key, $stand, $type = 1)
{
    if ($type == 1) {
        $number = $redis->sRandMember($key);
    } else {
        $number = $redis->sPop($key);
    }
    
    return $number < $stand;
}

注意,stand是用来设置概率的。比如,集合中有10000个元素,将stand设置为10,那么概率即为10/10000.当redis集合返回的元素值小于等于该值,即表示抽中。

Redis的集合还能完成其他有趣的功能,比如,统计当天的访问ip,统计活跃用户等等。大家可以发挥自己的想象力,完成更多有趣的功能。

以上就是使用Redis完成抽奖功能的详细内容,更多请关注其它相关文章!


# 他们的  # 小程序网站怎么推广的呢  # 考研试卷网站建设大学  # 汕头社交媒体推广网站  # 域名和seo哪个更好用  # 厦门湖里互联网营销推广  # 企业seo模型  # seo技术自学  # 南湾哪有网站建设  # 腾讯视频 seo  # 罗山全网推广营销中心  # Redis  # 有意思  # 您的  # 都是  # 自己的  # 如何实现  # 网络带宽  # 这两个  # 中有  # 的是 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 《猎聘》筛选猎头岗位方法  原子笔记app误删找回教程  b站怎么查看视频的码率_b站视频码率查看方法  163邮箱在线登录 163邮箱网页版在线入口  使用 J*aScript 随机化 CSS Grid 布局中的元素顺序  免费占卜在线神算_免费占卜手机神算  如何在mysql中设计餐饮点餐系统_mysql点餐系统项目实战  《环球网校》设置报考省市方法  掌握CSS :has() 选择器:父选择器、嵌套限制与常见陷阱解析  《蓝色星原:旅谣》坐骑获取攻略  《糖豆》添加舞曲方法  windows10怎么开启卓越性能_windows10电源选项代码激活  React应用中Commerce.js数据加载与状态管理最佳实践  如何定制PrimeNG Sidebar的背景颜色  蛙漫2(台版)正版官网 2025免费网页版分享  小红书网页版在线直达 小红书网页版免费登录入口  如何发挥新媒体矩阵作用?新媒体矩阵怎么搭建?  更换小红书群背景怎么换?小红书群规则怎么设置?  西瓜视频怎么查看访客记录_西瓜视频访客记录查看方法  使用Python和NLTK从文本中高效提取名词的实用教程  百度识图图像分析 百度识图识别平台  荣耀Magic7拍照夜景噪点处理_荣耀Magic7相机优化  汽车之家网页版免费登录_汽车之家官网首页直接进入  如何修改Windows截图的默认保存位置_告别C盘让桌面更整洁【教程】  《三国:谋定天下》平民全阶段通用阵容  阿里云共享相册入口在哪  电脑双系统如何安装和卸载 Windows和Linux双系统安装教程【详解】  PyEZ 配置提交中 RpcTimeoutError 的健壮性处理策略  sublime怎么快速在浏览器中预览HTML_sublime配置View in Browser教程  铁路12306买票怎么选双人铺 铁路12306卧铺分配规则说明  Lar*el Dusk 测试中管理浏览器权限:以剪贴板访问为例  《随手记》备份数据方法  晨报|开发商暗示《空洞骑士:丝之歌》DLC开发中 《合金装备4》有望重制  iCloud官方网站 iCloud网页版在线登录入口  虫虫助手如何更新游戏  《友玩*》创建群聊方法  附近酒吧怎么找?  Animex动漫社社登录官网 Animex动漫社资源社入口直达  word文档中的分隔符有哪些不同类型和用途_Word分隔符类型与用途方法  百度地图离线地图无法加载如何解决 百度地图离线地图加载优化方法  《伊瑟》凶影追缉库卢鲁boss攻略  美发店速赢秘籍  谷歌浏览器怎么把网页翻译成中文_Chrome网页翻译功能使用方法  《美篇》取消会员自动续费方法  汽水音乐车机版 汽水音乐车机版官方入口  《撕歌》会员开通方法  mysql中外键约束如何使用_mysql FOREIGN KEY操作  百度输入法在AutoCAD中无法输入中文怎么办_百度输入法CAD输入异常解决方法  房产|直播|视频号怎么认证开通?|直播|需要什么资质?  QQ邮箱手机版网页版 QQ邮箱登录入口地址 

 2020-05-13

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.