Redis实现银行排号系统、彩票出号系统

redis的几个小命令:

incr可以实现银行排号系统。

1、增一和减一
因为针对数字值的增一和减一操作非常常见,所有redis特别为这两个操作创建了INCR命令和DECR命令。
看看下面实战

127.0.0.1:6379> set num 10
OK
127.0.0.1:6379> INCR num
(integer) 11
127.0.0.1:6379> DECR num
(integer) 10

2、增加或减少数字的值
对于一个键是字符串的key,值是数字的,我们可以使用INCRBY命令增加值,或者使用DECRBY命令来减少值。
命令返回操作执行之后,key的当前值,如果key原先不存在,则Redis会生成一个key为键,value为0的键值对,然后再来增加或减少操作。
看看下面这个实战

127.0.0.1:6379> INCRBY num 100
(integer) 100
127.0.0.1:6379> INCRBY num 25
(integer) 125
127.0.0.1:6379> DECRBY 10
(error) ERR wrong number of arguments for 'decrby' command
127.0.0.1:6379> DECRBY num 10
(integer) 115
127.0.0.1:6379> DECRBY num 50
(integer) 65

彩票出号系统,在可以通过SRANDMEMBER实现

操作redis中的set数据类型,不能有重复的元素

SADD number  1 2 3 4 5 6 7 8 9 10 11 12 13 
# 只给定 key 参数,返回一个随机元素

  SRANDMEMBER nunber
2

 SRANDMEMBER nunber 
7

# 给定 3 为 count 参数,返回 3 个随机元素
# 每个随机元素都不相同

  SRANDMEMBER nunber  3
1) 3
2) 5
3) 11

# 给定 -3 为 count 参数,返回 3 个随机元素
# 元素可能会重复出现多次

   SRANDMEMBER nunber -3 
1) 3 
2) 3
3) 12

# 如果 count 是整数,且大于等于集合基数,那么返回整个集合
# 如果 count 是负数,且 count 的绝对值大于集合的基数,那么返回的数组的长度为 count 的绝对值
# SRANDMEMBER 并不会修改集合内容,取完数据集合不会改变


你可能感兴趣的:(java技术)