Redis 的数据类型及命令(三)

String 字符串类型

redis 不区分大小写

设置值:set name 123

获取值:get name

获取所有的key :keys *

判断某一个key 是否存在:exists name

追加字符串:append name 456  (如果这个key 不存在,则相当于set key)

获取字符串的长度:strlen name

判断某个博客的浏览量可以使用,自增:

set views 0 初始化浏览量为0

自增1 incr views

获取当前浏览量:get views

自减1:decr views

同时可以增加指定数量的值:incrby views 10

也可以减少指定数量的值:decrby views 8

通过range 截取字符串:getrange name 0 1

获取全部字符串:getrange name 0 -1

替换某个位置的字符串:setrange name 1 xx

设置某个key的过期时间:setex name 20 hello

获取剩余的过期时间:ttl name

同时设置多个值:mset k1 v1 k2 v2

同时获取多个值:mget k1 k2

msetnx 是一个原子性操作,要么全部成功,要么全部失败:msetnx k1 v1 k4 v4

此时k4 会设置失败!

对象设置:mset user:1:name zhangsan user:1:age 2

获取对象:mget user:1:name user:1:age

String 字符串的使用场景:

计数器,文章阅读数,浏览量,粉丝数,统计数量,对象缓存存储

 

List(列表类型)

lpush list one 将值插入到左边

lpush list two

lpush list three

lrange list 0 -1 获取全部数据   

rpush list four 将值插入到右边

lpop list 移除左侧第一个数据

rpop list 移除右侧第一个数据

lindex list 1  通过下标获取list 中的某一个值

llen list 返回列表的长度

移除指定列表中的值:lrem list 1 one

通过下标截取指定的长度:ltrim list 1 2

通过下标更新指定的值:lset list 1 item(如果不存在,则报错)

这种类型类似于消息队列,栈。

Set(集合类型)

sadd myset 111 设置值

smembers myset 查看指定set 的所有值

sismember myset 111 判断某一个值是不是在set 集合中。

scard myset 获取set 集合中的个数

srem myset 111 移除指定列表中的元素

srandmember myset 随机抽取其中的一个元素

srandmember myset 2 随机抽取指定个数的元素

spop 随机删除set 集合中的元素

差集,交集,并集

sdiff 差集   sdiff key1 key2

sinter 交集 (共同好友)sinter key1 key2

sunion 并集 sunion key1 key2

 

Hash 哈希类型

set 一个具体的key value 值 hset myhash field1 xc

获取值:hget myhash field1

设置多个值:hmset myhash field1 xc field2 zz

获取多个值:hmget myhash field1 field2 

获取全部值:hgetall myhash

删除hash指定key 字段:hdel myhash field1

获取长度:hlen myhash

判断hash中指定字段是否存在:hexists myhash field1

获取所有的field:hkeys myhash

获取所有的value:hvals myhash

自增,自减:hincrby myhash field3 1     hdecrby myhash field3 1

hash 更适合对象存储,string 更适合字符串存储

 

Zset(有序集合)

zadd myset 1 one  添加一个值  zadd myset 1 one 2 two 添加多个值

zrange myset 0 -1 获取所有值

zadd salary 2500 xiaohong  添加用户

zrangebyscore salary -inf +inf 显示所有数据,从小到大

zrevrange salary 0 -1 从大到小排序

zrangebyscore salary -inf 2500 withscores 显示工资小于2500 的员工并按照升序排序

zrem salary xiaohong 移除指定元素

zcard salary 获取元素个数

 

还有三种特殊的数据类型

Geospatial 地理位置

添加坐标命令:geoadd china:city 116.40 39.90 beijing

获取经纬度的值:geopos china:city beijing shanghai zhengzhou

获取两地之间的距离:geodist china:city beijing zhengzhou km

获取附近的人:georadius china:city 110 30 1000km 110是经度,30 为纬度 半径为1000km 之内的城市

 GEORADIUS china:city 110 30 500 km withdist  显示到110 30 这个位置的距离

GEORADIUS china:city 110 30 500 km withcoord 显示到110 30 这个地方的定位信息

GEORADIUSBYMEMBER china:city beijing 1000 km 显示距离到北京500km 的城市名

GEOhash china:city beijing zhengzhou 把经纬度转换为大小为11的字符串,字符串越接近,则距离越近

geo 地理位置是使用zset 来实现的,所以可以使用zset 的命令查询到,比如:zrange china:city 0 -1

 

Hyperloglog 数据结构

应用场景:统计一个网站的访问人数,某一个人访问了2次网站,还算做访问一次,去除重复的数据。

命令:pfadd mykey a b v s w e r t

pfadd mykey1 a d d f b s t h

合并 pfmerge mykey3 mykey mykey1

查看数量:pfcount mykey3

缺点是这种方式有一定0.81% 的错误率,如果需求允许容错,则可以采用这种方式,如果不允许容错,则采用用set 集合存储id 的方式,比较占用内存。

Bitmaps

应用场景:登录与未登录,打卡与未打卡

setbit sign 0 1 0 代表周一 0 1 代表打卡

setbit sign 1 0

setbit sign 2 1

查看某一天的值:getbit sign 2

统计打卡记录:bitcount sign

------------------------------------------------

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值