Redis基本数据类型


redis存在5种基本数据类型和三种特殊类型

String类型

取值赋值

关键词:set get append strlen

set key value    #基本使用设置值
get key
append key abc  #追加值
strlen key     #获取字符串长度

例:
在这里插入图片描述

加减操作

increment 自增1 decrement 自减
incrby 固定增量 自定义
decrby 固定减量 自定义

#值++
incr key
#值--
decr key
#增长指定的长度
incrby key number
#减少指定的长度
decrby key number

例:
在这里插入图片描述

范围操作 range

getrange key index1 index2 获取当前指定范围 如果最大长度 index2 可替为-1

getrange k3 2 5
2=初始下标
5=末尾下标
5=-1==以下标2到末尾的范围

在这里插入图片描述
在这里插入图片描述

替换操作

setrange key offset index 内容 ##offset 偏移量 指定位置开始替换

 SETRANGE k3 2 4444444
 2=初始偏移的下标
 后面index是要替换的内容

在这里插入图片描述

判断是否存在

#set with expire #如果存在设置消失时间及信息值

EXISTS key    #判断值是否存在
setex key time v   #既能增加过期时间还能够重新指定新的值,如果当前key不存在创建一个新的key和值并指定过期时间
ttl key   #查看key的过期时间()

在这里插入图片描述
#set if not expire #如果不存在 默认会创建一个新的,存在不操作 / 及判断存在不存在同时也能根据结果进行进一步操作

setnx key v  

在这里插入图片描述

批量值操作

more set 
mset k1 v1 k2 v2  #存
mget k1 k2   #取

在这里插入图片描述
在这里插入图片描述

关于对象的存储

set key value 
#例如:set user {id:1,name:zhangsan,age:20}

在这里插入图片描述
如果多个对象存储时可能会遇上同一个对象存储两个,当两个key相同时第二次存储会覆盖第一次数据
建议:key可以用id代替
例如:

set 1 {id:1,name:zhangsan,age:20}
set 2 {id:2,name:zhangsan2,age:21}

在这里插入图片描述

取值赋值操作

getset 先取值,再赋值

在这里插入图片描述

关于浮点类型的增减操作

关键词: incrbyfloat 不支持直接+1-1操作 支持固定增减量操作

incrbyfloat  key 浮点数字

在这里插入图片描述

删除操作

del key

在这里插入图片描述

List列表类型

list列表类型,特点:所有的命令操作都是使用l开始。 和链表/队列比较相似,可以通过首尾进行操作。

基本赋值和取值操作

默认左侧插入值: lpush l意思 list
右侧插入值:rpush r意思 right
查询数据:lrange key start end
获取长度 llen key

lpush student zhangsan wangwu lisi   #添加一个list列表
lpush student liubei   #从左侧插入数据
rpush student zhangfei   #从右侧插入数据
lrange student 0 -1   #查询这个student列表中的全部数据
llen student    #获取这个list列表的长度

list结构的删除数据操作

删除整个list列表

del key   #这种是直接将整个列表都删除 del删除删除任意类型

删除list列表中的某一些数据
关键词:pop 弹出 抛出
语法:
lpop count 左侧弹出

# 没给count值,默认左 弹出1 返回的信息是弹出的值
 lpop stu
# count 提供值,可以弹出多个,返回值就是弹出的值得列表
lpop stu 10

rpop count 右侧弹出

# 没给count值,默认右 弹出1 返回的信息是弹出的值
 rpop stu
# count 提供值,可以弹出多个,返回值就是弹出的值得列表
rpop stu 10

查询删除指定值 list remove
关键词:lrem key count value ---- 默认从左侧开始查询并删除

lpush student wangwu zhaoliu zhangsan lisi wangwu tianqi zhangsan
zhangsan   #添加一个list列表(有多个zhangsan)
 lrem stu 2 zhangsan  #count正数 从左向右删除 count负数, 从右向左删除

索引相关 index

通过索引获取数据
lindex key index

lindex student 0  #获取下标为0的数据

截取列表中一部分值
trim 在Java和脚本中是去掉前后空格,本身意思 修剪、整理。 在redis中作用域截取部分值,截取完成只保留获取的内容。

ltrim student 1 4  #截取列表中的第1到第4下标的数据

列表中替换值
lset

lset student 1 wangwu  #把下标为1的数据替换成wangwu

Set集合类型

特点: 无序、不能重复 所有命令 s 开头

基本操作

通过测试:重复的值无法添加成功,并且值得顺序也不是固定的。
添加值:

sadd student

在这里插入图片描述

查询值:

smembers student

在这里插入图片描述

删除整个集合:

del student

在这里插入图片描述

删除集合中的某个值:

srem key value

在这里插入图片描述

其他操作

判断当前集合中是否存在指定的值 s is member 是否是成员
语法 sismember key v

sismember student zhangsan

在这里插入图片描述

查看当前集合中值个数 s card
语法:scard key

scard student

在这里插入图片描述

随机获取和随机删除
随机获取: srandmember [ s random member ]
语法:srandmember key count

srandmember student 1

在这里插入图片描述

随机删除: spop
语法: spop key count

spop student 1

在这里插入图片描述

特殊操作

差集 diff 差异 只返回第一个集合的差值

sadd zb1 zhangsan lisi wangwu xiaoming xiaohong
sadd zb2 zhangsan wangwu dasima xiaohuang
sdiff zb1 zb2
sdiff zb2 zb1

在这里插入图片描述

交集 sinter 交集

sinter zb1 zb2

在这里插入图片描述

并集 s union 联盟 工会 ---- 去重复

sunion zb1 zb2

在这里插入图片描述

Hash类型(map结构)

key-value(map) 比较适合对象类型的数据存储 key -(key-value)

基础语法

存值:

hset student k1 v1 k2 v2 ......

在这里插入图片描述

取值:

hget student k1    #只能取一个值
hmget student k1 k2 k3 ...   #可以取多个

在这里插入图片描述
获取全部的值 hgetall 名称k

hgetall student

在这里插入图片描述

通过值的key删除指定的数据

 hdel student k3

在这里插入图片描述

读取当前hash表(map集合)中数据的个数

 hlen student

在这里插入图片描述

其他用法

判断是否存在

hexists student k1

读取所有的key ----- 1w条数据 取某一些特定的数据,取到所有key 循环 取值 判断 筛选。

hkeys student

取所有的value — 案例:Java中想将redis中的hash结构转化为set结构

hvals student

Zset

有序不重复集合,在set的基础上多增加一个值 set k1 * v1 (zset k1 排序的值(score) v1)
有序不可重复的set集合
主要使用方向:工资、班级成绩等等之类的数据。 或者 权重处理 0 普通 1 重要

基本语法

增加

 zadd emps 8000 {id:1,name:zhangsan,sal:8000}
 zadd emps 5000 {id:2,name:lisi,sal:5000}
 zadd emps 12000 {id:3,name:wangwu,sal:12000}

查询

zrange emps 0 -1      #查询 - 默认升序
zrandmember emps 1    #随机读取

删除数据
删除整个key :del key

zrem emps {id:2,name:lisi,sal:5000}
del emps

zset 复杂查询

#显示所有信息,从小到大 (范围) -inf 负无穷 +inf正无穷
语法:** z range by score** key min max — min max使用的是排序字段的值

zrangebyscore emps 8000 10000   #范围
zrangebyscore emps -inf +inf    #正无穷大,负无穷大

升序操作(默认的就是升序)

# 根据当前排序结果取所有数据
zrangebyscore emps -inf +inf
# 根据当前排序结果取所有数据 并显示排序字段
zrangebyscore emps -inf +inf withscores
# 根据当前排序结果取所有数据 并显示排序字段 并截取某一部分值
zrangebyscore emps -inf +inf withscores limit 0 1
# 取排序字段值大于**的数据
zrangebyscore emps 8000 +inf
# 取排序字段值小于**的数据
zrangebyscore emps -inf 8000

降序操作
z rev range k start stop start stop取索引的范围。

#降序显示
zrevrange emps 0 -1
根据当前排序(降序)结果取所有数据
zrevrangebyscore emps +inf -inf

geospatial 地理位置

语法:
geoadd key 精度 纬度 名称

geoadd maps 116.22518499110029 39.951383565611934 xuejiaao

查询指定位置的经纬度 GEOPOS

geopos maps xuejiaao

查询两地点之间的距离 GEODIST
geodist key 地点1 地点2 单位(默认 米)

geodist maps xuejiaao hongyun M

查询附近的城市(定位) GEORADIUS

georadius maps 116.22518499110029 39.951383565611934 1500 KM

查询附近的城市(定位)–显示到中间的距离 GEORADIUS
关键词: withdist

georadius maps 116.22518499110029 39.951383565611934 500 KM withdist

查询附近的城市(定位)–显示他人精准信息 GEORADIUS
关键词:withcoord

 georadius maps 116.22518499110029 39.951383565611934 500 KM withdist withcoord

查询附近的城市(定位)–显示他人精准信息 并指定返回个数 GEORADIUS
关键词: count

georadius maps 116.22518499110029 39.951383565611934 500 KM withdist withcoord count 1

GEO RADIUS BY MEMBER 通过元素(非坐标)定位信息

georadiusbymember maps hongyun 10 KM

Geohash 返回hash值 作用是将二维写的经纬度转化为一维的字符串,字符串越像表示距离越近

geohash maps hongyun

HyperLogLog基数统计

添加基础数据

> pfadd clazz zhangsan lisi wangwu zhaoliu tianqi

获取总数

 pfcount clazz

合并 – 规则 将后面的数据合并到第一个指定的key中–合并之后也是默认去重复。

pfmerge clazz stu

Bitmaps位图

首先增加基础数据 setbit

setbit kq 1 1

查看某一天的打卡记录 getbit

getbit kq 1

统计打卡的天数 bitcount

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值