Redis基本数据类型以及常用命令(加上Redis6中新增的数据类型)

Redis的基本数据类型

1.String字符串

String的数据结构为简单的动态字符串,是可以修改的字符串,内部结构实现类似于java的ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配

常用命令: 

1) set <key><value> 添加键值对

 

*nx:当数据库中key不存在时,可以将key-value添加到数据库中

*xx:当数据中key存在时,可以将key-value添加到数据库中与nx相互排斥

*ex:keyd的超时秒数(设置时,key已存在,会覆盖该key,超过所设置的秒数后值会自动消失)

*px:key的超时毫秒数,与ex互斥

2)get <key> 查询对应键值

 

3)append<key><value> 将给定的<value>追加到原值的末尾 

 

 4)strlen<key> 获得值的长度  

 

5)incr<key> 将key中存储的数字值增加1

6)decr<key> 将key中的存储数字值减1

7)incrby/decrby <key> <number> 将key中存储的数字值增减。number可自定义

8)mset<key1><value1><key2><value2>.... 同时设置多个key-value对

9)mget<key1><key2><key3>.... 同时获取一个或多个value

10)msetnx<key1><value1><key2><value2>.... 同时设置多个key-value对(注意!!当所有给定的key都不存在时才OK)---->书写例子可参考mset与mget命令

 

11)getset<key><value> 以新换旧,设置新值的同时获得就值,但key中的旧值会被新值取代

2.列表 List(单键多值)

Redis列表是简单的字符串列表,按照插入顺序。可添加一个元素到列表的头部或尾部(左边或右边)

底层为双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会比较差

常用命令:

1)lpush/rpush <key><value1><value2><value3>.... 从左边/右边插入一个或多个值

 

2)lpop/rpop <key> 从左边/右边吐出一个值。(如果值全部都被吐出了,键也就不存在了)

3)rpoplpush<key1><key2> 从<key1>列表右边(尾部)吐出一个值,查到<key2>列表左边(头部)

 

4)lrange <key><start><stop> 按照索引下标获得元素(从左到右)

⭐小提示:0到-1意为全部长度

 

5)lindex<key><index>按照索引下标获得元素(从左到右)

6)llen<key>获得列表长度

7)linsert<key> before/after<value><newvalue> 在<value>的前面/后面插入<newvalue>插入值

 

 

8)lrem<key><n><value> 从左边删除n个value(从左到右)

⭐若value值在表中唯一(例如a11只有一个),则只会按照从左到右的顺序删除一个值为a11的值

 

9)lset<key><index><value>将列表key下标为index的值替换成value | [0,1,2,3,4,......]

 

3.集合Set

Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动排重的,如果你需要存储一个列表数据且不希望出现重复数据时,set是一个很好的选择

常用命令:

1)sadd<key><value1><value2>.... 将一个或多个元素加入到集合key中,已存在的元素将被忽略

 

2)smembers<key>取出该集合的所有值

 

3)sismember<key><value>判断集合<key>是否含有该<value>值,有则返回1,无则返回0

 

4)scard<key>返回该集合的元素个数

 

5)srem<key><value1><value2>....删除集合中的某个元素

 

6)spop<key>随机从该集合中吐出一个值,会从集合中删除

 

7)srandmember<key><n>随机从该集合中取出n个值,不会从集合中删除

 

 

8)smove<source><destination>value把集合中的一个值从一个集合移动到另一个集合

 

 

9)sinter<key1><key2>返回两个集合的交集元素

 

10)sunion<key1><key2>返回两个集合的并集元素

 

11)sdiff<key1><key2>返回两个集合的差集元素

⭐差集元素(A中有的且不包含B中的)

 

4.哈希Hash

Redis hash是一个键值对集合,是一个String类型的field和value的映射表。类似于java里面的Map<String Object>

常用命令:

1)hset <key><field><value>给<key>集合中的<field>键赋值<value>

⭐其中,user:1001为key,id为field,value为001

 

2)hget <key1><field>从<key1>集合<field>中取出value 

 

3)hmset <key1><field1><value1><field2><value2>....批量设置hash的值

4)hexists <key1><field> 查看哈希表key中,给定域field的值是否存在(存在返回1,不存在返回0)

 

 

5)hkeys<key> 列出该hash集合的所有field

 

6)hvals<key> 列出该hash集合的所有value

 

7)hincrby<key><field><increment>为哈希表 key 中的域field的值加上增量(增量可自己定义)

 

8)hsetnx<key><field><value>将哈希表key中的域field的值设置为value,当且仅当域field不存在(不存在返回1,存在返回0)

 

5.有序集合 zset(sorted set)

Redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合。

但与set的不同之处是有序集合的每个成员都关联了一个评分<score>属性,这个属性被用来按照从最低分到最高分的方式排序集合中的成员。集合成员是唯一的,但是评分可以是重复的

常用命令:

1)zadd <key1><score1><value1><score2><value2>....将一个或多个member元素及其score值加入到有序集key当中

 

2)zrange <key><start><stop>[withscores] 返回有有序集key中,下标在<start><stop>之间的元素,若带上withscores,可以让分数一起和值返回到结果集中

 

3)zrangebyscore <key> <min> <max> [withscores] [limit offset count]

返回有序集key中,所有score值介于min和max之间(包括等于min或max)的成员。有序集成员按score值递增(从小到大)次序排列

⭐若是从大到小排序:则使用zrevrangebyscore <key> <max> <min> [withscores] [limit offset count]

 

4)zincrby<key><increment><value> 为元素的score加上增量

 

 

 

5)zrem<key><value>删除该集合下,指定值的元素

 

6)zcount<key><min><max>统计该集合,分数区间内的元素个数

 

7)zrank<key><value>返回该值在集合中的排名,从0开始

⭐因为从0开始排名,java排名为1,说明java是排在第二位的,第一位的c则排名为0

 

Redis6中的新增的数据类型:

1.Bitmaps

Bitmaps本身不是一种数据类型,它是字符串(key-value)但是它可以对字符传的位进行操作,

常用命令:

1)setbit<key><offset><value>设置Bitmaps中某个偏移量的值(0或1)

⭐offset偏移量从0开始

 

 

2)getbit<key><offset>获取这个key中某个偏移量的值

⭐当然,偏移量设置为0也可以

 

 3)bitcount<start end> 统计字符串被设置位1的bit数量(它计算的是byte的位置)

⭐其中位0的bit数量为1,位1的bit数量为4(可从上面例子中观察得来)

 

⭐<start end>表示下标位

例如

 

4)bitop and(or/not/xor)<destkey> [key...]

and:交集 or:并集 not:非 xor:异或

首先,设置两个key,以及相应的偏移量

其中,画红线的地方就是他们的交集,运用bitop算出他们都多少个交集👇

其他逻辑关系使用形式同上

2.HyperLogLog

HyperLogLog主要解决数据中的基数问题(不重复的数)

常用命令:

1)pfadd<key><element>[element...] 添加指定元素到HyperLogLog中(可以加一个或多个)

 

2)pfcount<key> 统计key中的基数数量

 

3)pfmerge<destkey><sourcekey>[sourcekey...] 将key中的内容做合并

 

3.Geospatial

地理信息的缩写,该类型就是元素的二维坐标,在地图上的经纬度。redis基于该类型,提供了经纬度设置,查询,范围查询,距离查询,经纬度Hash等常见操作

常用命令:

1)geoadd<key><loginitude><latitude><member>[longitude latitude member...]

添加地理位置(经度、纬度、名称)

 

2)geopos<key><member>[member...]获得指定地区的坐标值

 

3)geodist<key><member1><member2>[m(米)|km(千米)|ft(英里)|mi(英尺)] 获取两个位置之间的直线距离

 

4)georaduis<key><longitude><latitude>radius m|km|ft|mi 以给定的经纬度为中心,找出某一半径内的元素

以上便是我能整理出来的全部内容了,希望能对使用、学习redis的人有一点点帮助,如有不足,请大佬们补充、交流哦~~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值