• Redis五大数据类型——Set


    Redis五大数据类型——Set

    set中的值是不能重复的,是无序不重复集合。

    127.0.0.1:6379> sadd set v1		# set的底层是hashtable,返回插入元素的个数
    (integer) 1
    127.0.0.1:6379> sadd set v2
    (integer) 1
    127.0.0.1:6379> sadd set v3
    (integer) 1
    127.0.0.1:6379> SMEMBERS set		# 查看指定set中的所有元素
    1) "v1"
    2) "v2"
    3) "v3"
    127.0.0.1:6379> SADD set v1		# 添加重复的值就会失败,返回0
    (integer) 0
    127.0.0.1:6379> SISMEMBER set v1	# 查看指定set中的元素是否存在,存在返回1,不存在返回0
    (integer) 1
    127.0.0.1:6379> SISMEMBER set v4
    (integer) 0
    
    127.0.0.1:6379> SCARD set		# 查看set的大小,个数
    (integer) 3
    
    127.0.0.1:6379> SREM set v1		# 移除set中的指定元素
    (integer) 1
    127.0.0.1:6379> SCARD set
    (integer) 2
    127.0.0.1:6379> SMEMBERS set
    1) "v2"
    2) "v3"
    127.0.0.1:6379> SADD set v1 v4
    (integer) 2
    
    127.0.0.1:6379> SRANDMEMBER set		# 随机取元素
    "v2"
    127.0.0.1:6379> SRANDMEMBER set
    "v1"
    127.0.0.1:6379> SRANDMEMBER set
    "v2"
    127.0.0.1:6379> SRANDMEMBER set
    "v3"
    127.0.0.1:6379> SRANDMEMBER set 2	# 随机取指定个数的元素
    1) "v3"
    2) "v4"
    127.0.0.1:6379> SPOP set 		# 随机移除元素,返回移除的元素
    "v3"
    127.0.0.1:6379> SMEMBERS set
    1) "v1"
    2) "v2"
    3) "v4"
    
    # ================
    127.0.0.1:6379> sadd set1 v1 v2 v3
    (integer) 3
    127.0.0.1:6379> sadd set2 v4 v5 v6
    (integer) 3
    127.0.0.1:6379> SMOVE set1 set2 v1	# 将一个集合的指定元素,移动到另外的集合中去,(栈顶)
    (integer) 1
    127.0.0.1:6379> SMEMBERS set1
    1) "v2"
    2) "v3"
    127.0.0.1:6379> SMEMBERS set2
    1) "v1"
    2) "v6"
    3) "v5"
    4) "v4"
    
    # ================
    # 微博,B站,共同关注(交集)
    # 数字集合类:
    #  - 差集 SDIFF	
    #  - 交集
    #  - 并集 SINTER	共同好友
    
    127.0.0.1:6379> sadd k1 v1 v2 v3
    (integer) 3
    127.0.0.1:6379> sadd k2 v3 v4 v5
    (integer) 3
    127.0.0.1:6379> SDIFF k1 k2		# 得到在k1集合中,而不在k2集合中的元素
    1) "v1"
    2) "v2"
    127.0.0.1:6379> SINTER k1 k2		# 得到两个集合中的交集
    1) "v3"
    127.0.0.1:6379> SUNION k1 k2		# 并集
    1) "v2"
    2) "v5"
    3) "v3"
    4) "v4"
    5) "v1"
    

    微博,A用户在所有关注的人房子啊一个set集合中(用户id唯一),将他的粉丝也放在一个集合中。

    于是,就可以实现:

    • 共同关注(交集),共同爱好,推荐好友(六度分割理论)
  • 相关阅读:
    尴尬的事情又发生Newtonsoft.Json vs Protobuf.net
    python的多线程到底有没有用?
    Python中单线程、多线程和多进程的效率对比实验
    Python 一篇学会多线程
    Python中threading的join和setDaemon的区别及用法
    Python 函数定义以及参数传递
    python的thread和threading区别
    mod_python
    Maven 入门
    微信开发 没有认证过的服务号怎么办?微信提供了測试号(开通了认证过的服务号的功能)
  • 原文地址:https://www.cnblogs.com/liuhuan086/p/13581422.html
Copyright © 2020-2023  润新知