Redis6数据类型

Redis库:
默认16个数据库,类似数组下标从0开始,初始默认使用0号库,统一密码管理,所有库同样密码
使用命令 select <dbid>来切换数据库。如: select 8 
dbsize查看当前数据库的key的数量
flushdb清空当前库
flushall通杀全部库

key键操作:
keys * 查看当前库所有key(查看keys k1,keys *1)
exists key 判断某个key是否存在
type key 查看你的key是什么类型
del key 删除指定的key数据
unlink key 根据value选择非阻塞删除,仅将keys从keyspace元数据中删除,真正的删除会在后续异步操作
expire key 10 为给定的key设置过期时间10秒钟
ttl key 查看还有多少秒过期,-1表示永不过期,-2表示已过期

五大数据类型:
1.String 
一个key对应一个value,string可以包含任何数据,比如jpg图片或者序列化的对象,一个Redis中字符串value最多可以是512M

常用命令:
set <key> <value> 设置键值对
setnx <key> <value> 只有在key不存在时设置key的值
get <key> 查询对应键值
append <key> <value> 将给定的<value> 追加到原值的末尾
strlen <key> 获得值的长度
incr <key> 将key中储存的数字值增1,只能对数字值操作,如果为空,新增值为1
decr <key> 将key中储存的数字值减1,只能对数字值操作,如果为空,新增值为-1
incrby/decrby <key> <> 将key中储存的数字值增/<>

原子性,有一个失败则都失败:
mset  <key1> <value1> <key2> <value2> ... 同时设置一个或多个key-value  
mget  <key1> <key2> <key3> ... 同时获取一个或多个 value  
msetnx <key1> <value1> <key2> <value2> ... 同时设置一个或多个key-value对,当且仅当所有给定key都不存在

getrange <key> <起始位置> <结束位置> 获得value的范围,类似java中的substring
setrange <key> <起始位置> <value> 从起始位置开始覆写value
setex <key> <过期时间> <value> 设置键值的同时,设置过期时间,单位秒
getset <key> <value> 返回旧值设置新值

数据结构:
简单动态字符串(Simple Dynamic String,缩写SDS),可以修改的字符串,内部结构实现上类似于JavaArrayList
字符串长度<1M时,扩容都是x2现有的空间,如果>1M,扩容时一次只会+1M的空间。需要注意的是字符串最大长度为512M

2.List
单键多值,简单的字符串列表,底层实际是个<双向>链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差
常操作列表的头部(左边)或者尾部(右边)

常用命令:
lpush/rpush <key> <value1> <value2> <value3> ... (从左边/右边插入一个或多个值)
lpop/rpop <key> (从左边/右边取出一个值)
rpoplpush <key1> <key2> (<key1>列表右边取出一个值,插到<key2>列表左边)

llen <key> (获得列表长度)
lindex <key> <index> (按照索引<下标>获取元素)
lrange <key> <start> <stop> (按照索引<下标范围>获取元素),lrange mylist 0 -1 (0左边第一个,-1右边第一个,0 ~ -1表示获取所有)

linsert <key> before/after <value> <newvalue> (<value>的前面/后面插入<newvalue>)
lrem <key> <n> <value> (从左边开始删除n个值为value的节点)
lset <key> <index> <newvalue> (将key列表下标为index的值替换成newvalue)

数据结构:
列表元素较少,使用一块连续的内存存储,ziplist (为了节省内存空间)
数据量比较多,将多个ziplist使用双向指针串起来组成了quicklist

3.Set
Set是string类型的无序集合,数据不重复

常用命令:
sadd <key> <value1> <value2> ... (将一个或多个 member 元素加入到集合<key>中,已经存在的 member 元素将被忽略)
smembers <key> (取出该集合的所有值)
sismember <key> <value> (判断集合<key>是否为含有该<value>值,有1,没有0)
scard <key> (返回该集合的元素个数)
srem <key> <value1> <value2> ... (删除集合中的某个元素)
spop <key> (从该集合中取出任何一个值)
srandmember <key> <n> (随机从该集合中取出n个值,不会从集合中删除)
smove <source> <destination> value (把集合中一个值从一个集合移动到另一个集合)
sinter <key1> <key2> (返回两个集合的交集元素,key1 ∩ key2)
sunion <key1> <key2> (返回两个集合的并集元素,key1 ∪ key2)
sdiff <key1> <key2> (返回两个集合的差集元素,key1 - key2)

数据结构:
哈希表,HashSet的内部实现使用的是HashMapRedis的set结构也是一样,它的内部也使用hash结构,所有的value都指向同一个内部值

4.Zset(sorted set)
与集合set非常相似,不同之处是有序集合的每个member都关联了一个score

常用命令:
zadd <key> <score1> <value1> <score2> <value2>(将一个或多个member元素及其score值加入到有序集key当中)
zrange <key> <start> <stop> [WITHSCORES] (返回有序集key中,下标在<start><stop>之间的元素,带WITHSCORES,可以让分数一起和值返回到结果集)
zrangebyscore key minmax [withscores] [limit offset count] (返回有序集key介于min<=score<=max之间的member,有序集成员按score值从小到大次序排列)
zrevrangebyscore key maxmin [withscores] [limit offset count] (同上,改为从大到小排列) zincrby <key> <increment> <value> (member的score +<increment>)
zrem <key> <value> (删除member)
zcount <key> <min> <max> (统计该集合,分数区间内的元素个数)
zrank <key> <value> (返回该member在集合中的次序,从0开始)

数据结构:
(1)hash,hash的作用就是关联元素value和权重score,保障元素value的唯一性,可以通过元素value找到相应的score值。
(2)跳跃表,跳跃表的目的在于给元素value排序,根据score的范围获取元素列表。

5.Hash
Redis hash 是一个键值对集合,类似Java里面的Map<key,Object>
特别适合用于存储对象,通过 key + field 就可以操作对应属性数据了

常用命令:
hset <key> <field> <value> (<key> <field>键赋值<value>)
hsetnx <key> <field> <value> (当且仅当域field不存在,将哈希表key中的域field的值设置为value)
hget <key> <field> (<key>对象<field>字段取出value)
hmset <key> <field1> <value1> <field2> <value2>... (批量设置hash的值)
hexists <key> <field> (查看哈希表key field是否存在)
hkeys <key> (列出该hash集合的所有field)
hvals <key> (列出该hash集合的所有value)
hincrby <key> <field> <increment> (为哈希表key中的域field的值加上增量<increment>)

数据结构:
Hash类型对应的数据结构是两种:当field-value长度较短且个数较少时使用ziplist(压缩列表),否则使用hashtable(哈希表)

Redis新数据类型:

1.Bitmaps
Bitmaps本身不是一种数据类型,它就是String,但是它可以对String每个二进制位操作
可以把Bitmaps想象成一个以位为单位的数组,数组的每个单元只能存储01,数组的下标在Bitmaps中叫做偏移量

常用命令:
setbit <key> <offset> <value> (设置Bitmaps中某个偏移量的值,offset从0开始,value取01)
getbit <key> <offset> (获取Bitmaps中某个偏移量的值)
bitcount <key> [start end] (统计字符串从start字节~end字节比特值=1的数量,1字节=8bit)

2.HyperLogLog
求集合中不重复元素个数

常用命令:
pfadd <key> < element> [element ...]  (添加指定元素到HyperLogLog)
pfcount <key> [key ...] (计算HyperLogLog的近似基数)
pfmerge <destkey> <sourcekey> [sourcekey ...] (将一个或多个HLL合并后的结果存储在destkey HLL中)

3.Geospatial
Geo=Geographic=地理信息,spatial=空间的,Geospatial=地理空间
提供了经纬度设置,查询,范围查询,距离查询,经纬度Hash等操作
longitude经度(-180~180),latitude纬度(-85.05112878~85.05112878)

常用命令:
geoadd <key> <longitude> <latitude> <member> [longitude latitude member...]  (添加地理位置)
geopos <key> <member> [member...]  获得指定地区的坐标值
geodist <key> <member1> <member2> [m|km|ft|mi]  (获取两个位置之间的直线距离,m表示单位为米[默认值])
georadius <key> <longitude> <latitude> radius m|km|ft|mi  (以给定的经纬度为中心,找出半径内的所有元素)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值