【Redis】Redis的数据类型


一:Redis的五种基本类型

Redis键命令的基本语法: COMMAND KEY_NAME
示例如下:
在这里插入图片描述
基本命令:

SET       设置key
GET       查看key对应值
EXPIRE    设置key的过期时间
TTL       查看key剩余时间
EXISTS    判断当前key是否存在
KEYS *    查看所有的key
DEL       删除当前key
TYPE      查看key存储的value类型

1、字符串string

set / get
设置值  格式:set  key value
获取值  格式:get  key

在这里插入图片描述

exists
判断key是否存在  格式 exists key

在这里插入图片描述

append
追加字符串,如果key不存在,相当于是set命令  格式:append key  apendvalue 

在这里插入图片描述

strlen
获取字符串的长度  格式:strlen  key

在这里插入图片描述

incr / decr
对value值进行自增1操作(如果key不存在,会被初始化为0)  格式: incr  key
对value值进行自减1操作  格式:decr  key

在这里插入图片描述

incrby / decrby
设置加减的步长   格式:incrby key  num        decrby key num

在这里插入图片描述

getrange
获取给定范围的字符串值  格式:getrange key  start   stop

在这里插入图片描述

setrange
从指定的位置开始替换字符串的值   格式:setrange  key offset value

在这里插入图片描述

setex / ttl
设置过期时间 格式: setex  key  seconds values
查看剩余时间  格式:ttl key

在这里插入图片描述

setnx
setnx(set if not exists) 如果指定的key不存在则设置,存在的失败  
格式: setnx key value
(分布式锁经常使用)

在这里插入图片描述

mset / mget
同时设置多个值  格式:mset  key1 value1 key2 value2 ...
同时获取多个值  格式:mget key1  key ...

在这里插入图片描述

getset
先获取值在设置值  格式:getset  key value

在这里插入图片描述
应用场景:

  • 计数器(分散数、统计数)
  • 通常来保存单个字符串或者JSON字符串数据(短信验证码)

2、列表list

类似于linkedlist链表结构,可以添加元素到列表的头部或者是尾部,同样头部和尾部都可以进行获取,可以用来作为栈、队列、阻塞队列

lpush / rpush / lrange
从列表的左侧插入值  格式:lpush   key  value
从列表的右侧插入值  格式:rpush   key  value
从列表中获取指定范围的值 格式:lrange key start stop

在这里插入图片描述

lpop / rpop
从列表的左侧移除值  格式:lpop  key
从列表右侧移除值    格式:rpop  key

在这里插入图片描述

lindex
获取指定下标的值   格式:lindex  key  index

在这里插入图片描述

llen
获取列表中元素的个数   格式:llen  key

在这里插入图片描述

lrem
已移除列表中的元素   格式:lrem  key count  value

在这里插入图片描述

rpoplpush
移除列表中最后一个元素,将他添加到另一个列表中    
格式:rpoplpush  key1  key2 

在这里插入图片描述

lset
根据下标替换列表中的值  格式:lset key index value

在这里插入图片描述
应用场景:

  • 对数据量大的集合进行删减
  • 列表数据显示:评论列表、关注列表、留言列表

list底层是一个链表,在l链表插入或者改动值,效率高,中间位置来修改,相对效率低一些

队列:
lpush \ rpop

栈:
lpush \ lpop

3、集合set

set中元素不能重复的
set实现是基于哈希表结构实现,在修改、添加等操作复杂度是O(1)

sadd
在set集合中添加数据   格式:sadd   key value

在这里插入图片描述

smembers
获取set集合中所有值  格式:smembers   key

在这里插入图片描述

sismember
判断某个值是否在set中  格式:sismember key value

在这里插入图片描述

scard
获取set中元素个数    格式:scard  key

在这里插入图片描述

srem
删除set中元素     格式:srem  key  value

在这里插入图片描述

srandmember
从set中随机获取值  格式:srandmember key  count

在这里插入图片描述

spop
随机删除指定的元素    格式:spop  key  [count]

应用场景:

  • 利用唯一性:可以统计访问网站的所有独立的ip
  • 对集合间进行求交集、并集、差集 方便实现共同挂住,共同喜欢,二度好友

应用:
在这里插入图片描述

4、哈希hash

hash是一个map集合,是key-value的map集合

hset / hget
插入和获取哈希的值   hset key field value /hget key  field

在这里插入图片描述

hmset / hmget
批量的插入和获取  格式:hmset   key  field1 value1  field2 value2 ....
获取格式:  hmget  key  field1  field2 ...

在这里插入图片描述

hgetall
获取hash中所有的值  格式:hgetalll key

在这里插入图片描述

hdel
删除指定的filed 的哈希键值对  格式:hdel  key field

在这里插入图片描述

hexitsts
判断哈数中字段是否存在 格式:hexists key  field 
hkeys / hvals
获取哈数中所有字段或者值  格式 :hkeys  key    /hvals  key
hsetnx
如果存在,则失败,如果不存在,则添加成功    
格式:hsetnx  key field  value

应用场景:

  • hash中存储经常变更的对象,比如用户信息: user :name-value age-value ,sex-value
  • hash适合存储对象 ,String适合存储字符串

5、有序集合zset

  • 每个元素都会关联一个double类型的分数,Redis正是通过分数为集合中的成员进行从小到大的排序
  • 有序集合的成员是唯一的,但分数是可以重复
  • 有序集合中的命令都是以z开头的
zadd
添加一个元素  格式:zadd  key score value

在这里插入图片描述

zrange
获取zset中一定范围内的值  格式:zrange  key start stop

在这里插入图片描述

zrangebyscore
将zset中的值按照从小到大排序数据  格式  zrangebyscore min max

在这里插入图片描述

zrem
删除zset中指定的元素  格式:zrem  key  value

在这里插入图片描述

zcard

在这里插入图片描述

zcount
根据score的值来统计给定区间的元素的个数  格式:zcount key min  max

在这里插入图片描述
应用场景:

  • 对于需要排序的场景下可以使用zset. 比如微博的实时新闻可以以发表时间作为score来存储,获取时就自动按时间来排好序

二:Redis的三种特殊类型

1、geospatial 地理空间

可以用来实现定位、附近的人、打车APP上距离计算

城市的经纬度查询:http://www.jsons.cn/lngcode
在这里插入图片描述

geoadd
添加地址位置  格式:geoadd key  纬度  经度  名称
对于两级无法直接添加

在这里插入图片描述

geopos
返回给定名称的经度和纬度  格式:geopos  key 名称

在这里插入图片描述

geodist
返回两个给定位置之间的距离  格式:geodist  key   名称1  名称2  距离单位
距离单位: m()  km(千米)  mi(英里)  ft(英尺)

在这里插入图片描述

geohash

返回给定的名称的11位的字符哈希值
在这里插入图片描述

georadius
以给定经纬度为中心,找到某一个半径内的元素

在这里插入图片描述
附近的人,打车附近可用车辆显示…

georadiusbymember
以一个成员为中心,查找指定范围内的元素

在这里插入图片描述

geo的底层实现上是一个zset集合在这里插入图片描述

2、hyperloglogs

  • Redis中通过hyperloglogs用来进行基数统计的算法
    技术估算存在一定的误差,快速计算基数

比如:{1,3 ,5,7,5,7,8}
基数集{1,3,5,7,8} 基础(不重复元素)

pfadd

指定数据到hyperloglog中

pfcount

返回基数的估算值

pfmerge

将多个hyperloglog合并为一个hyperloglog

在这里插入图片描述

3、bitmap

  • bitmap是位图存储,都是通过二进制来进行记录,所有只有两种状态值的场景,都可以使用
    比如:登录、未登录、活跃、不活跃。。。
setbit
在bitmap中添加数据  格式:setbit key offset  value

在这里插入图片描述

getbit
查看位图上某个位置的值  格式:getbit key offset

在这里插入图片描述

bitcount

统计位图上value为1的个数  格式:bitcount key start  end 

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值