redis zset怎么排序_关于Redis(一)

redis-benchmark

是一个压力测试工具,官方自带的性能测试工具。

99ea765b23abe2e5a9e8921eaf2e74ba.png

测试验证

8639e8f790634aff6fdb1abc76a4610d.png

redis基础知识

23b78e186e993f7044b690738ee48bd7.png

有16个数据库,默认使用第0个,可以在客户端连接内使用select命令切换数据库。

# 切换数据库select [编号]# 查看所有keykeys *# 清空当前库flushdb# 清空所有库flushall# 查看key是否存在exist key# 移除keymove key# 设置key的过期时间expire key [时间]# 查看key的剩余过期时间ttl key# 查看key的类型type key

redis是单线程的,基于内存操作,cpu不是redis的性能瓶颈,机器的内存和网络带宽影响redis的读写效率,所以使用了单线程来实现。

redis为什么快?


数据在不同位置的读取速度:cpu>内存>硬盘

redis将所有数据放在内存中,且是单线程的。(多线程上下文切换会耗时)。对于内存系统来说,没有上下文切换,效率就是最高的。

五大数据类型


Redis是一种开放源代码(BSD许可)的内存中数据结构存储,用作数据库,缓存和消息代理。它支持数据结构,例如字符串,哈希,列表,集合,带范围查询的排序集,位图,超级日志,带有半径查询和流的地理空间索引。Redis具有内置的复制,Lua脚本,LRU逐出,事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster自动分区提供了高可用性。

String


# 设置值set name "hjx"# 获取值get name# 追加字符串,如果当前key不存在,就相当于setappend name ",hello"# 获取key的长度strlen name# 自增1incr key# 自减1decr key # 自增指定长度incrby key [长度]# 自减指定长度decrby key [长度]# 获取key的指定长度 getrange key 0 -1相当于get keygetrange key [start] [end]# 替换指定位置的值setrange key [offset] [value]# 设置过期时间(set with expire)setex name 10 "hjx"# 如果不存在会怎么怎么样(set if not exist),用于redis分布式锁setnx name "hjxhhhh"(未过期时无法覆盖name的内容)# 批量设置keymset k1 v1 k2 v2 k3 v3# 批量获取key值mget k1 k2 k3# 批量不存在就设置key值(以下ex设置失败,因为msetnx时一个原子命令)msetnx k1 v1 k4 v4# key的巧妙设计,相当于(set user:1 {name:"zhansgan",age:23})mset user:1:name "zhangsan" user:1:age:23mget user:1:name user:1:age# 组合命令 getset (如果不存在值,则设置值,如果存在值,则返回值并设置新的值)getset db redis(返回nil)get db (返回redis)getset db mysql (返回redis)get db (返回mysql)

List


# 将一个或多个值,插入list的头部(左。rpush:右)lpush list onelpush list twolpush list threelrange list 0 -1结果"one two three"rpush list fourlrange list 0 -1 结果"one two three four"# 获取list中的值(可设置区间) lrange list 0 -1# 移除list的第一个元素lpop list# 移除list的最后一个元素rpop list# 通过下标获得list的值lindex list 0# 获取当前list的长度Llen list# 移除list中指定个数的valuelrem list 2 one# 修剪rpush list 1rpush list 2rpush list 3rpush list 4ltrim list 1 2 lrange list 0 -1返回:“2”,“3”# 移除list1中的元素到list2中rpoplpush list1 list2# 将list中指定下标的值替换为另外一个值(更新操作)lset list 0 "hjx"# 将某个值插入到list指定元素的前面或后面linsert list before

Set


# 添加元素sadd myset hjx# 查看指定set的所有值smembers myset# 判断值存不存在setsismember myset hjx# 获取set的长度scard myset# 移除元素srem myset hjx# 随机查询元素srandmember myset# 随机查询指定个数的元素srandmember myset 2# 随机删除元素spop myset# 移动某个集合的元素到另一个集合smove myset myset1 hjx# 查看两个集合的差集 sdiff myset myset1# 查看两个集合的交集sinter myset myset1# 查看两个集合的并集sunion myset myset1

Hash


# 设置值hset myhash field1 hjx# 获取值hget myhash field1# 批量设置值hmset myhash field1 hello field2 world# 批量获取值hmget myhash field1 field2# 获取所有值hgetall myhash# 删除某个元素hdel myhash field1# 获取长度hlen myhash# 判断指定值是否存在hexists myhash field1# 获取所有keyhkeys myhash# 获取所有key的值hvals myhash# 不存在则设置hsetnx myhash field1 hjxhjx# 指定增量自增hincrby myhash field1 5# 可用于存储经常变化的结构复杂的对象,如用户信息

Zset


# 添加zadd myset 1 one # 添加一个zadd myset 1 one 2 two 3 three # 添加多个# 获取所有值zrange myset 0 -1# 排序zadd salary 2500 zhangsanzadd salary 5000 lisizadd salary 250 wangwuzrangebyscore salary -inf +inf# 排序带值zrangebyscore salary -inf +inf withscoreszrangebyscore salary -inf 250 withscores# 移除元素zrem salary zhangsan# 获取长度zcard salary# 获取区间元素的个数zcount myset 1 3# 在set的基础上增加了一个排序值。可做排行榜

geospatial地理位置


# 添加地理位置 参数:key 纬度 经度 名称geoadd china:city 39.90 116.40 beijing# 获取指定城市的经纬度geopos china:city beijing# 计算两个位置之间的距离geodist china:city beijing shanghai km  -m:米 -km:千米 -mi:英里 -ft:英尺# 获得当前经纬度指定距离的半径内的城市georadius china:city 110 30 1000 km# 获得当前经纬度指定距离的半径内的城市并输出距离georadius china:city 110 30 1000 km withdist# 获得当前经纬度指定距离的半径内的城市并输出经纬度georadius china:city 110 30 1000 km withcoord# 获得当前经纬度指定距离的半径内指定数量的城市并输出经纬度georadius china:city 110 30 1000 km withcoord count 3# 找出指定城市周围的城市georadiusbymembers china:city beijing 1000 km# 获取当前城市的经纬度的hash值geohash china:city beijing  # 底层是zset,微信附近的人,两人之间的距离,都可以实现

Hyperloglog基数统计


# 创建元素pfadd mykey a b b c d e f # 统计不重复的元素个数pfcount mykey# 合并两个集合pfmerge mykey3 mykey mykey2# 有0.81%的误差,占用内存空间极小,可做网站UV统计

Bitmap位图


# 记录一周打卡setbit sign 0 1setbit sign 1 0setbit sign 2 0setbit sign 3 1setbit sign 4 1setbit sign 5 0setbit sign 6 1# 查看某一周是否打卡getbit sign 3# 统计一周的打卡记录bitcount sign# 位存储 二进制01,统计用户信息,活跃不活跃状态;登陆未登录;打卡未打卡。
	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值