Redis基本数据类型之key操作

前置:Key的说明与操作

# del key [key ...]  : 删除指定的key ;
时间复杂度:字符串为O(1);其它类型为O(M): M 为元素个数
# exists key : 判断是否存在key
# expire key seconds :设置生存时间,set | getset 可以重写
# pexpire key milliseconds : 以毫秒设置key的过期时间
# ttl key :  返回生存时间,以秒为单位
# pttl key : 返回生存时间,以毫秒为单位
# persist key : 删除生存时间
# expireAt(key, timestamp) : 设置具体的过期时间
# pexpireAt key millseconds-timestamp : 以毫秒为单位,设置key具体过期日期
# keys pattern : 返回满足pattern 的key
# migrate host port key des-db timeout [copy|replace] : 从当前实例中原子性的移动指定的key到host上,成功则目标服务器上肯定有key,且当前实例会删除key
# move key db : 移动key 到指定的db中
# randomkey : 随机返回DB中的一个key
# rename key newKey : 重命名key
# renameNx key newKey : 当且仅当newKey不存在时,才重命名
# restore key ttl serialized-value : 反序列化值,并保存到key中,并设置过期时间为 ttl ;
# dump key : 序列化key的值
# sort key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern...]] [ASC|DESC] [ALPHA] [STORE destination] : 根据条件返回key中排序后的元素,默认以数字作为对象,值被解释为双精度浮点数进行比较

lpush today_cost 1 30 1.5 22 #
sort today_cost # 默认按数字从小到大
sort today_cost DESC # 按数字从大到小排序
sort today_cost ALPHA # 按字符串从小到大
sort today_cost LIMIT 0  1  # 按数字排序,并返回前两个
sort uid BY user_level_* # 先取出uid的值,然后把值带入user_level_*,然后取user_level_$uid 的值做为uid的权重排序
sort uid GET user_name_*  : 排序uid后,取 user_name_$uid 的值并返回;如果有多个则直接在后面添加,会对每一个uid都会按顺序执行一个GET;如果要获取被排序键的值,使用 GET #
~> 以上两个排序结合: 按level 排序后,再取出命名: sort uid BY user_level_* GET user_name_*
~>使用hash表做排序
hmset user_info_1 name admin level 9999;
hmset user_info_2 name jack level 1;
hmset user_info_3 name peter level 3;
hmset user_info_4 name mary level 9;
sort uid BY user_info_* ->level; # 按 user_info_$uid中的level排序uid
sort uid BY user_info_* ->level GET user_info_* -> name # 按user_info_$uid 中的level 排序,并获取user_info_$uid 中name值
sort uid STORE sortUid # 排序后保存

# type key : 值类型【string | list | set | zset | hash | none】
#       以下四个命令不会阻塞服务器,在迭代时,元素可以会被修改
#       而keys、smember 等会阻塞服务器,按需使用
# scan cursor [MATCH pattern] [COUNT count] :  迭代当前数据库中的所有键
# sscan .... : 迭代集合键中的元素
# hscan ... : 迭代哈希表中的键值对
# zscan ... : 迭代有序集合中的元素,包含元素与其它score
#