Redis夺命20问苍青浪

大家好,我是捡田螺的小男孩。金九银十即将到来,整理了20道经典Redis面试题,希望对大家有帮助。

Redis,英文全称是RemoteDictionaryServer(远程字典服务),是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

与MySQL数据库不同的是,Redis的数据是存在内存中的。它的读写速度非常快,每秒可以处理超过10万次读写操作。因此redis被广泛应用于缓存,另外,Redis也经常用来做分布式锁。除此之外,Redis支持事务、持久化、LUA脚本、LRU驱动事件、多种集群方案。

大多数小伙伴都知道,Redis有以下这五种基本类型:

它还有三种特殊的数据结构类型

C语言的字符串是char[]实现的,而Redis使用SDS(simpledynamicstring)封装,sds源码如下:

structsdshdr{unsignedintlen;//标记buf的长度unsignedintfree;//标记buf中未使用的元素个数charbuf[];//存放元素的坑}SDS结构图如下:

Redis为什么选择SDS结构,而C语言原生的char[]不香吗?

字符串和哈希类型对比如下图:

一图看懂list类型的插入与弹出:

list应用场景参考以下:

我们都知道内存读写是比在磁盘快很多的,Redis基于内存存储实现的数据库,相对于数据存在磁盘的MySQL数据库,省去磁盘I/O的消耗。

我们知道,Mysql索引为了提高效率,选择了B+树的数据结构。其实合理的数据结构,就是可以让你的应用/程序更快。先看下Redis的数据结构&内部编码图:

Redis支持多种数据数据类型,每种基本类型,可能对多种数据结构。什么时候,使用什么样数据结构,使用什么样编码,是redis设计者总结优化的结果。

I/O多路复用

什么是I/O多路复用?

单线程模型

Redis的虚拟内存机制是啥呢?

虚拟内存机制就是暂时把不经常访问的数据(冷数据)从内存交换到磁盘中,从而腾出宝贵的内存空间用于其它需要访问的数据(热数据)。通过VM功能可以实现冷热数据分离,使热数据仍在内存中、冷数据保存到磁盘。这样就可以避免因为内存不足而造成访问速度下降的问题。

先来看一个常见的缓存使用方式:读请求来了,先查下缓存,缓存有值命中,就直接返回;缓存没命中,就去查数据库,然后把数据库的值更新到缓存,再返回。

缓存穿透:指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,进而给数据库带来压力。

通俗点说,读请求访问时,缓存和数据库都没有某个值,这样就会导致每次对这个值的查询请求都会穿透到数据库,这就是缓存穿透。

缓存穿透一般都是这几种情况产生的:

如何避免缓存穿透呢?一般有三种方法。

布隆过滤器原理:它由初始值为0的位图数组和N个哈希函数组成。一个对一个key进行N个hash算法获取N个值,在比特数组中将这N个值散列后设定为1,然后查的时候如果特定的这几个位置都为1,那么布隆过滤器判断该key存在。

解决方案就有两种:

什么是热Key呢?在Redis中,我们把访问频率高的key,称为热点key。

如果某一热点key的请求到服务器主机时,由于请求量特别大,可能会导致主机资源不足,甚至宕机,从而影响正常的服务。

而热点Key是怎么产生的呢?主要原因有两个:

那么在日常开发中,如何识别到热点key呢?

如何解决热key问题?

只有当访问一个key时,才会判断该key是否已过期,过期则清除。该策略可以最大化地节省CPU资源,却对内存非常不友好。极端情况可能出现大量的过期key没有再次被访问,从而不会被清除,占用大量内存。

Redis中同时使用了惰性过期和定期过期两种过期策略。

但是呀,如果定期删除漏掉了很多过期的key,然后也没走惰性删除。就会有很多过期key积在内存内存,直接会导致内存爆的。或者有些时候,业务量大起来了,redis的key被大量使用,内存直接不够了,运维小哥哥也忘记加大内存了。难道redis直接这样挂掉?不会的!Redis用8种内存淘汰策略保护自己~

我们一提到redis,自然而然就想到缓存,国内外中大型的网站都离不开缓存。合理的利用缓存,比如缓存热点数据,不仅可以提升网站的访问速度,还可以降低数据库DB的压力。并且,Redis相比于memcached,还提供了丰富的数据结构,并且提供RDB和AOF等持久化机制,强的一批。

当今互联网应用,有各种各样的排行榜,如电商网站的月度销量排行榜、社交APP的礼物排行榜、小程序的投票排行榜等等。Redis提供的zset数据类型能够实现这些复杂的排行榜。

比如,用户每天上传视频,获得点赞的排行榜可以这样设计:

zadduser:ranking:2021-03-03Jay3zincrbyuser:ranking:2021-03-03Jay1zremuser:ranking:2021-03-03Johnzrevrangebyrankuser:ranking:2021-03-03027.3计数器应用各大网站、APP应用经常需要计数器的功能,如短视频的播放数、电商网站的浏览数。这些播放数、浏览数一般要求实时的,每一次播放和浏览都要做加1的操作,如果并发量很大对于传统关系型数据的性能是一种挑战。Redis天然支持计数功能而且计数的性能也非常好,可以说是计数器系统的重要选择。

几乎每个互联网公司中都使用了分布式部署,分布式服务下,就会遇到对同一个资源的并发访问的技术难题,如秒杀、下单减库存等场景。

消息队列是大型网站必用中间件,如ActiveMQ、RabbitMQ、Kafka等流行的消息队列中间件,主要用于业务解耦、流量削峰及异步处理实时性低的业务。Redis提供了发布/订阅及阻塞队列功能,能实现一个简单的消息队列系统。另外,这个不能和专业的消息中间件相比。

Redis是基于内存的非关系型K-V数据库,既然它是基于内存的,如果Redis服务器挂了,数据就会丢失。为了避免数据丢失了,Redis提供了持久化,即把数据保存到磁盘。

Redis提供了RDB和AOF两种持久化机制,它持久化文件加载流程如下:

RDB,就是把内存数据以快照的形式保存到磁盘上。

什么是快照可以这样理解,给当前时刻的数据,拍一张照片,然后保存下来。

RDB的优点

RDB缺点

AOF(appendonlyfile)持久化,采用日志的形式来记录每个写操作,追加到文件中,重启时再重新执行AOF文件中的命令来恢复数据。它主要解决数据持久化的实时性问题。默认是不开启的。

AOF的工作流程如下:

AOF的优点

AOF的缺点

我们在项目中使用Redis,肯定不会是单点部署Redis服务的。因为,单点部署一旦宕机,就不可用了。为了实现高可用,通常的做法是,将数据库复制多个副本以部署在不同的服务器上,其中一台挂了也可以继续提供服务。Redis实现高可用有三种部署模式:主从模式,哨兵模式,集群模式。

主从模式中,Redis部署了多台机器,有主节点,负责读写操作,有从节点,只负责读操作。从节点的数据来自主节点,实现原理就是主从复制机制

主从复制包括全量复制,增量复制两种。一般当slave第一次启动连接master,或者认为是第一次连接,就采用全量复制,全量复制流程如下:

redis2.8版本之后,已经使用psync来替代sync,因为sync命令非常消耗系统资源,psync的效率更高。

slave与master全量同步之后,master上的数据,如果再次发生更新,就会触发增量复制。

当master节点发生数据增减时,就会触发replicationFeedSalves()函数,接下来在Master节点上调用的每一个命令会使用replicationFeedSlaves()来同步到Slave节点。执行此函数之前呢,master节点会判断用户执行的命令是否有数据更新,如果有数据更新的话,并且slave节点不为空,就会执行此函数。这个函数作用就是:把用户执行的命令发送到所有的slave节点,让slave节点执行。流程如下:

主从模式中,一旦主节点由于故障不能提供服务,需要人工将从节点晋升为主节点,同时还要通知应用方更新主节点地址。显然,多数业务场景都不能接受这种故障处理方式。Redis从2.8开始正式提供了RedisSentinel(哨兵)架构来解决这个问题。

哨兵模式,由一个或多个Sentinel实例组成的Sentinel系统,它可以监视所有的Redis主节点和从节点,并在被监视的主节点进入下线状态时,自动将下线主服务器属下的某个从节点升级为新的主节点。但是呢,一个哨兵进程对Redis节点进行监控,就可能会出现问题(单点问题),因此,可以使用多个哨兵来进行监控Redis节点,并且各个哨兵之间还会进行监控。

简单来说,哨兵模式就三个作用:

故障切换的过程是怎样的呢

假设主服务器宕机,哨兵1先检测到这个结果,系统并不会马上进行failover过程,仅仅是哨兵1主观的认为主服务器不可用,这个现象成为主观下线。当后面的哨兵也检测到主服务器不可用,并且数量达到一定值时,那么哨兵之间就会进行一次投票,投票的结果由一个哨兵发起,进行failover操作。切换成功后,就会通过发布订阅模式,让各个哨兵把自己监控的从服务器实现切换主机,这个过程称为客观下线。这样对于客户端而言,一切都是透明的。

哨兵的工作模式如下:

哨兵模式基于主从模式,实现读写分离,它还可以自动切换,系统可用性更高。但是它每个节点存储的数据是一样的,浪费内存,并且不好在线扩容。因此,Cluster集群应运而生,它在Redis3.0加入的,实现了Redis的分布式存储。对数据进行分片,也就是说每台Redis节点上存储不同的内容,来解决在线扩容的问题。并且,它也提供复制和故障转移的功能。

一个Redis集群由多个节点组成,各个节点之间是怎么通信的呢?通过Gossip协议!

RedisCluster集群通过Gossip协议进行通信,节点之前不断交换信息,交换的信息内容包括节点出现故障、新节点加入、主从节点变更信息、slot信息等等。常用的Gossip消息分为4种,分别是:ping、pong、meet、fail。

特别的,每个节点是通过集群总线(clusterbus)与其他的节点进行通信的。通讯时,使用特殊的端口号,即对外服务端口号加10000。例如如果某个node的端口号是6379,那么它与其它nodes通信的端口号是16379。nodes之间的通信采用特殊的二进制协议。

既然是分布式存储,Cluster集群使用的分布式算法是一致性Hash嘛?并不是,而是HashSlot插槽算法。

插槽算法把整个数据库被分为16384个slot(槽),每个进入Redis的键值对,根据key进行散列,分配到这16384插槽中的一个。使用的哈希映射也比较简单,用CRC16算法计算出一个16位的值,再对16384取模。数据库中的每个键都属于这16384个槽的其中一个,集群中的每个节点都可以处理这16384个槽。

集群中的每个节点负责一部分的hash槽,比如当前集群有A、B、C个节点,每个节点上的哈希槽数=16384/3,那么就有:

RedisCluster集群中,需要确保16384个槽对应的node都正常工作,如果某个node出现故障,它负责的slot也会失效,整个集群将不能工作。

因此为了保证高可用,Cluster集群引入了主从复制,一个主节点对应一个或者多个从节点。当其它主节点ping一个主节点A时,如果半数以上的主节点与A通信超时,那么认为主节点A宕机了。如果主节点宕机时,就会启用从节点。

在Redis的每一个节点上,都有两个玩意,一个是插槽(slot),它的取值范围是0~16383。另外一个是cluster,可以理解为一个集群管理的插件。当我们存取的key到达时,Redis会根据CRC16算法得出一个16bit的值,然后把结果对16384取模。酱紫每个key都会对应一个编号在0~16383之间的哈希槽,通过这个值,去找到对应的插槽所对应的节点,然后直接自动跳转到这个对应的节点上进行存取操作。

虽然数据是分开存储在不同节点上的,但是对客户端来说,整个集群Cluster,被看做一个整体。客户端端连接任意一个node,看起来跟操作单实例的Redis一样。当客户端操作的key没有被分配到正确的node节点时,Redis会返回转向指令,最后指向正确的node,这就有点像浏览器页面的302重定向跳转。

Redis集群实现了高可用,当集群内节点出现故障时,通过故障转移,以保证集群正常对外提供服务。

redis集群通过ping/pong消息,实现故障发现。这个环境包括主观下线和客观下线。

主观下线:某个节点认为另一个节点不可用,即下线状态,这个状态并不是最终的故障判定,只能代表一个节点的意见,可能存在误判情况。

客观下线:指标记一个节点真正的下线,集群内多个节点都认为该节点不可用,从而达成共识的结果。如果是持有槽的主节点故障,需要为该节点进行故障转移。

流程如下:

故障恢复:故障发现后,如果下线节点的是主节点,则需要在它的从节点中选一个替换它,以保证集群的高可用。流程如下:

分布式锁,是控制分布式系统不同进程共同访问共享资源的一种锁的实现。秒杀下单、抢红包等等业务场景,都需要用到分布式锁,我们项目中经常使用Redis作为分布式锁。

选了Redis分布式锁的几种实现方法,大家来讨论下,看有没有啥问题哈。

if(jedis.set(key,lock_value,"NX","EX",100s)==1){//加锁try{dosomething//业务处理}catch(){}finally{jedis.del(key);//释放锁}}这个方案可能存在这样的问题:

if(jedis.set(key,uni_request_id,"NX","EX",100s)==1){//加锁try{dosomething//业务处理}catch(){}finally{//判断是不是当前线程加的锁,是才释放if(uni_request_id.equals(jedis.get(key))){jedis.del(key);//释放锁}}}在这里,判断当前线程加的锁和释放锁是不是一个原子操作。如果调用jedis.del()释放锁的时候,可能这把锁已经不属于当前客户端,会解除他人加的锁。

一般也是用lua脚本代替。lua脚本如下:

当前开源框架Redisson就解决了这个分布式锁问题。我们一起来看下Redisson底层原理是怎样的吧:

Redis一般都是集群部署的,假设数据在主从同步过程,主节点挂了,Redis分布式锁可能会有哪些问题呢?一起来看些这个流程图:

如果线程一在Redis的master节点上拿到了锁,但是加锁的key还没同步到slave节点。恰好这时,master节点发生故障,一个slave节点就会升级为master节点。线程二就可以获取同个key的锁啦,但线程一也已经拿到锁了,锁的安全性就没了。

为了解决这个问题,Redis作者antirez提出一种高级的分布式锁算法:Redlock。Redlock核心思想是这样的:

搞多个Redismaster部署,以保证它们不会同时宕掉。并且这些master节点是完全相互独立的,相互之间不存在数据同步。同时,需要确保在这多个master实例上,是与在Redis单实例,使用相同方法来获取和释放锁。

我们假设当前有5个Redismaster节点,在5台服务器上面运行这些Redis实例。

RedLock的实现步骤:如下

简化下步骤就是:

什么是延时双删呢?流程图如下:

这个休眠一会,一般多久呢?都是1秒?

因为延时双删可能会存在第二步的删除缓存失败,导致的数据不一致问题。可以使用这个方案优化:删除失败就多删除几次呀,保证删除缓存成功就可以了呀~所以可以引入删除缓存重试机制

重试删除缓存机制还可以吧,就是会造成好多业务代码入侵。其实,还可以这样优化:通过数据库的binlog来异步淘汰key。

以mysql为例吧

redis使用多线程并非是完全摒弃单线程,redis还是使用单线程模型来处理客户端的请求,只是使用多线程来处理数据的读写和协议解析,执行命令还是使用单线程。

这样做的目的是因为redis的性能瓶颈在于网络IO而非CPU,使用多线程能提升IO读写的效率,从而整体提高redis的性能。

Redis通过MULTI、EXEC、WATCH等一组命令集合,来实现事务机制。事务支持一次执行多个命令,一个事务中所有命令都会被序列化。在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会插入到事务执行命令序列中。

简言之,Redis事务就是顺序性、一次性、排他性的执行一个队列中的一系列命令。

Redis执行事务的流程如下:

Redis作为一个K-V的内存数据库,它使用用一张全局的哈希来保存所有的键值对。这张哈希表,有多个哈希桶组成,哈希桶中的entry元素保存了key和value指针,其中*key指向了实际的键,*value指向了实际的值。

什么是哈希冲突?

哈希冲突:通过不同的key,计算出一样的哈希值,导致落在同一个哈希桶中。

Redis为了解决哈希冲突,采用了链式哈希。链式哈希是指同一个哈希桶中,多个元素用一个链表来保存,它们之间依次用指针连接。

有些读者可能还会有疑问:哈希冲突链上的元素只能通过指针逐一查找再操作。当往哈希表插入数据很多,冲突也会越多,冲突链表就会越长,那查询效率就会降低了。

为了保持高效,Redis会对哈希表做rehash操作,也就是增加哈希桶,减少冲突。为了rehash更高效,Redis还默认使用了两个全局哈希表,一个用于当前使用,称为主哈希表,一个用于扩容,称为备用哈希表。

可以的,Redis提供两个指令生成RDB,分别是save和bgsave。

RESP,英文全称是RedisSerializationProtocol,它是专门为redis设计的一套序列化协议.这个协议其实在redis的1.2版本时就已经出现了,但是到了redis2.0才最终成为redis通讯协议的标准。

RESP主要有实现简单、解析速度快、可读性好等优点。

应对缓存穿透问题,我们可以使用布隆过滤器。布隆过滤器是什么呢?

布隆过滤器原理是?假设我们有个集合A,A中有n个元素。利用k个哈希散列函数,将A中的每个元素映射到一个长度为a位的数组B中的不同位置上,这些位置上的二进制数均设置为1。如果待检查的元素,经过这k个哈希散列函数的映射后,发现其k个位置上的二进制数全部为1,这个元素很可能属于集合A,反之,一定不属于集合A。

来看个简单例子吧,假设集合A有3个元素,分别为{d1,d2,d3}。有1个哈希函数,为Hash1。现在将A的每个元素映射到长度为16位数组B。

我们现在把d1映射过来,假设Hash1(d1)=2,我们就把数组B中,下标为2的格子改成1,如下:

我们现在把d2也映射过来,假设Hash1(d2)=5,我们把数组B中,下标为5的格子也改成1,如下:

接着我们把d3也映射过来,假设Hash1(d3)也等于2,它也是把下标为2的格子标1:

因此,我们要确认一个元素dn是否在集合A里,我们只要算出Hash1(dn)得到的索引下标,只要是0,那就表示这个元素不在集合A,如果索引下标是1呢?那该元素可能是A中的某一个元素。因为你看,d1和d3得到的下标值,都可能是1,还可能是其他别的数映射的,布隆过滤器是存在这个缺点的:会存在hash碰撞导致的假阳性,判断存在误差。

如何减少这种误差呢?

我们又增加一个Hash2哈希映射函数,假设Hash2(d1)=6,Hash2(d3)=8,它俩不就不冲突了嘛,如下:

即使存在误差,我们可以发现,布隆过滤器并没有存放完整的数据,它只是运用一系列哈希映射函数计算出位置,然后填充二进制向量。如果数量很大的话,布隆过滤器通过极少的错误率,换取了存储空间的极大节省,还是挺划算的。

目前布隆过滤器已经有相应实现的开源类库啦,如Google的Guava类库,Twitter的Algebird类库,信手拈来即可,或者基于Redis自带的Bitmaps自行实现设计也是可以的。

THE END
1.如何制作一个好用的微信投票小程序,推荐几款可靠的微信投票小程序微信投票小程序成为近几年越来越流行的社交活动形式,引起了人们的极大兴趣。如今,越来越多的人选择使用微信投票小程序来做一个投票活动,查询大众对于某一个事情的看法以及收集一定的数据,帮助企业在市场上开展更有针对性的营销。 那么,如何制作一个好用的微信投票小程序呢?首先,我们需要选用一个可靠的微信投票小程序http://renzushan.com.cn/article/2024120863067.html
2.微信投票助手那个更加好用?投票案例详细让您不再迷茫单向好友功能投票案例详细让您不再迷茫 微信投票助手无需无需复杂的操作流程和专业技能,界面简洁,对于新手非常友好,投票助手往往不需要下载安装,在微信中搜索就可以使用。 那么微信内的投票助手都有哪些?3款爆火小程序评测。大家可以根据自己的需求进行选择。 一、投票管家https://www.163.com/dy/article/JGAO4P0Q05569CEA.html
3.微信排顺序小程序制作微信排顺序小程序怎么做微信排顺序小程序制作平台网站 > 自建&定制【微信排顺序小程序】立即注册开始 > ?微信、百度、抖音、头条小程序 ?抽奖、答题、投票、展示等多样化小程序 ?同城、社区、查询、咨询等热点小程序 ?覆盖70+行业,超400+套免费小程序模板立即制作 > https://qz.fkw.com/news/284219.html
4.微信小程序按顺序同步执行的两种方式微信小程序promsie.all和promise顺序执行一、前言 最近在做小程序的开发,碰到的一个需求就是表单提交,提交的表单中包含有图片,微信这边的做法是先上传图片,后台把图片名称和地址返回给你,然后你把图片信息插入到表单的相应位置再提交表单,这里就涉及到如何上传完图片的请求再上传表单,而且微信小程序里面如果图片是多个https://download.csdn.net/download/weixin_38714641/12930170
5.#亚洲超星团[超话]#投膏vx小程序的投票来自亚洲超星团沙雕亚洲超星团超话【投膏】vx小程序的投票,人员顺序过一段时间是会变化的,猜测难道是随着变化的实时排名吗? ?收藏 转发 评论 ?2 评论 o p 同时转发到我的微博 按热度 按时间 正在加载,请稍候 ü 简介: 欢迎私信/提问箱投膏~捡手机在置顶~ 更多a 微关系 她的关注https://weibo.com/7858616062/NzvKfmOKL
6.平潭博物馆提升改造工程(1)磋商小组将按照规定对各报价人的响应文件采用相同的程序和标准进行评价和比较,将按照提交首次响应文件时间的先后顺序(或者逆顺序)邀请通过资格及符合性审查的合格报价人至磋商现场进行磋商。 (2)所有合格的报价人均可至磋商现场进行磋商并进行最后报价。磋商小组确定成交候选人时以最后报价为准,最后报价不能高于第一https://zfcg.pingtan.gov.cn/upload/document/20220707/26aa62ad37a1451dbafba608a1355991.html
7.年会节目投票小程序教你制作实时投票大屏幕显示解决方案年会节目投票小程序_教你制作实时投票大屏幕显示 年会节目投票评选不用愁,微现场大屏互动投票软件帮您轻松搞定!活动现场经常需要举办实时投票活动,举办投票活动时,最重要的一点就是现场票数的统计和大屏幕展示。微现场的投票功能,专门解决现场投票问题,在投票统计、票数展示方面都拥有十分出色的表现。http://weixin.gycode.com/news/?id=1065
8.微信投票排版微信投票排序怎么设置助力平台在“微信投票”小程序中,我们可以选择创建一个新的投票或者参与已有的投票。如果是创建新的投票,我们需要点击“新建投票”按钮。 在新建投票页面中,我们需要填写投票的主题和选项。在填写选项时,我们可以点击“添加选项”按钮来增加选项的数量。在填写完主题和选项后,我们还可以设置投票的截止时间和是否匿名投票。 https://fuwu.11467.com/info/28123473.htm
9.微信小程序排行榜2017腾讯云开发者社区image.png 开发接口 登录 wx.login wx.checkSession 签名加密小程序登录 小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系登录流程时序小程序,开发者服务器,微信接口服务 wx.login()获取code wx.requhttps://cloud.tencent.com/developer/information/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F%E6%8E%92%E8%A1%8C%E6%A6%9C2017-article
10.GICC2024年度重磅奖项——金帆奖入围名单公示,线上大众投票投票开启 千帆竞逐,出海当先。GICC2024金帆奖入围企业名单公示。 本次金帆奖的大众投票期为10月9日-10月22日(截止至当天24:00),通过大众踊跃投票,金帆奖每个奖项将选出前15名入围企业或品牌进入专业评审团评选环节。 本次大众评委团组成:扬帆出海小程序用户 https://maimai.cn/article/detail?fid=1849676496&efid=4K5-8lHDCNEc2GbKB72ntQ
11.活动投票小马外包案例少儿舞蹈比赛线上拉人气加分投票环节,选手报名功能,选手按票数,报名时间以及礼物多少展示先后顺序,经验卡和防刷票功能,分享功能,评委评分打分功能https://www.yuanjisong.com/conproduction/155983
12.简单投票解决方案(简单投票系统)服务器技术在制作网站用模板搭建好投票小程序之后。点击上线,系统就会自动生成参加入口的二维码和链接。可以直接发在社群,群成员点击或者扫码就能直接参与。腾讯投票小程序生成二维码的方法:在制作网站用模板搭建好投票小程序之后。点击上线,系统就会自动生成参加入口的二维码和链接。 https://www.kangle.im/post/111710.html
13.专治选择困难症!中午吃什么今天谁打扫……这个小程序替你做决定微信搜索打开「超好用的抽签抓阄工具」小程序,你会发现,你进入一个软萌体的「首页」。 在「首页」,有 7 项抓阄的类目供你选择,它们分别是:「来抓阄」、「做选择」、「来分组」、「排顺序」、「分任务」、「去组团」和「去投票」。击你需要抓阄类目,就可以进入具体类目的抓阄主页面。下拉「首页」,还能查看https://www.ifanr.com/minapp/1133127
14.《网络反不正当竞争暂行规定》发布澎湃号·政务澎湃新闻客户端、小程序、公众号运营者以及提供跟帖评论服务的组织或者个人,不得故意与经营者共同实施前款行为。 本条所称的商业信誉,是指经营者在商业活动中的信用和名誉,包括相关公众对该经营者的资信状况、商业道德、技术水平、经济实力等方面的评价。 本条所称的商品声誉,是指商品在质量、品牌等方面的美誉度和知名度。https://www.thepaper.cn/newsDetail_forward_27362971
15.微信投票小程序怎么刷票的巨体5个细节!微信投票刷票数的方法有以下几种:1.微信投票小程序刷票大致可以通过以下两种方式:拉票:让好友帮忙投票。刷票:让成千上万的朋友帮你投票。2.专业的刷票平台分享投票链接。可以实现快速增加票数。3.微信群、论坛、博客、头条、百度贴吧等一些平台,分享自己的投票链接也可以增加票数。4.通过一些专门做的app,里边可以发https://wsa.jianshu.io/p/ee71e2fa99d2
16.#盘点22年入手#年度鞋#年度球鞋排行榜#投票小程序王一起奶油味小龙虾 百无聊赖 林半仙9527 情之翼 关注 ##2024得物年度鞋王 #得物年度球鞋榜单 #22年终好鞋 #盘点22年入 #年度鞋王 #预订今年鞋王之一 #网络投票平台 #投票评选 #网络投票 #得物喊你来投票啦 #年度最佳球鞋 #我的年度盘点 年终盘点 #盘点22年入手 #年度鞋 #年度球鞋排行榜 #投票小程序 王 一https://m.dewu.com/note/trend/details?id=256160088
17.投票选项官网投票选项官网-免费发起投票小程序、图文投票、视频投票音、频投票、群投票、投票评选、投票系统、投票制作、公众号投票、匿名投票、投票软件、分组投票、性能非常强大、一键免费创建投票活动吧!https://eqju.cn/
18.简易秀免费创建投票问卷抽奖系统H5小程序免费的投票问卷调查平台-简易秀(jexiu.com),创建投票活动,问卷调查,报名表单,抽奖系统,互动小游戏等微信小程序/H5制作投票系统软件;简易秀更前沿技术,人性化设计,提供千w问卷调查模板,百w场评选活动;支持手机填写,微信群发,红包抽奖,自定义域名等功能,超千w人次使用简易秀https://www.jexiu.com/
19.微信投票模板如何弄?投票小程序教程详细轻松教会你!投票小程序教程详细轻松教会你! 微信投票模板是一种预先设计好的投票页面格式,它为用户在微信平台上创建投票活动提供了便捷的框架。投票模板是这是模板的核心部分之一,用于明确展示投票的主题。投票模板以清晰、有序的方式呈现投票选项。对于单选投票,选项通常会以列表形式排列,每个选项旁边有一个单选按钮;多选投票则会https://www.huotoupiao.com/helpcenter/detail/5384
20.微信抽签小程序JavaScript一、微信抽签小程序的功能 分组:将参与人员随机分组,适用于团队建设、活动组织等场景。 抽签:随机抽取指定范围内的人员或选项,适用于决策、娱乐等场景。 排序:按照指定顺序排列参与人员,适用于比赛、竞赛等场景。 投票:进行匿名投票,适用于民主选举、意见征集等场景。 https://www.yyzq.team/post/376919.html