Redis系列文章------4.五大基本数据类型:String、List、Set、Hash、Zset

原创:兜里的猫

本章目录

  • String
  • List
  • Set
  • Hash
  • Zset

1. String(字符串)

==append:追加==

String
String

==incr:自增==

==decr:自减==

这里的incr类似于java中的 i++

这里的decr类似于java中的 i--

String
String

==incrby、decrby:步长==

这里的incrby类似于java中的 i+=

这里的decrby类似于java中的 i-=

String
String

==getrange:范围获取==

String
String

==setrange:范围替换==

String
String

==setex(set with expire):设置过期时间==

==setnx(set if not exist):不存在再设置(在分布式锁中会常常使用!)==

String
String

==mset/mget:批量插入、获取==

mset/mget

msetex/msetnx:msetnx体现了原子性,只要有一个key存在,都不会设置成功。

String
String

==存取对象==

两种方式:

第一种直接存一个json对象

第二种通过key的设计,来存储一个对象

String
String

==getset:更新==

先get后set;(可用于更新操作)

如果不存在值,则返回null;

如果存在值,获取原来的值,并设置新的值.

String
String

2. List(列表)

Redis的list相当于一个两头通的管子,左右都可以进,取数都是从右边出。

==lpush、lrange:list存取(从左边存,右边取)==

list
list

==rpush:从右边存==

list
list

==lpop、rpop:左移出、右移出==

list
list

==lindex:通过下标取list中的值==

list
list

==llen:获取list的长度==

list
list

==lrem:(remove)移出指定的value,指定移出几个==

list
list

==ltrim:通过下标截取指定的长度,只留下截取的值==

list
list

==rpoplpush:移出list中的最后一个元素,将其移动到新的list中==

list
list

==lset;将列表中指定下标的值替换为另一个值,更新操作==

list
list

==linsert:在列表中某个值之前/之后插入一个值==

list
list

小结:

    1.它实际上是一个链表,before Node after (可以在节点之前/之后插入值),left/right(也可以在链表左右两端插入值);
2.如果插入的key不存在,则自动创建新的链表;

3.如果key存在,则新增内容;

4.如果移除了所有的值,那就剩空链表,也代表不存在;

5.在两边插入或者改动值,效率最高!操作中间元素,相对来说效率会低点。

6.消息队列(Lpush、Rpop),栈(Lpush、Lpop)

3. Set(集合)

set中的值是不能重复的!

==sadd:向set集合中设置值==

==smembers:查看指定key的set集合中所有值==

==sismember:判断某一个值是不是在set集合中==

set
set

==scard:获取指定key的set集合中元素的个数==

==srem:移除指定key的set集合中的指定值==

set
set

==srandmember:随机抽选出指定key的一个值或者多个值==

set
set

==spop:随机删除指定key的集合中的一个或者多个值==

set
set

==smove:将一个set中的指定值,移动到另一个set集合中==

set
set

==数学集合类: sdiff(差集)、 sinter(交集)、 sunion(并集)==

set
set

4. Hash(哈希)

Hash是一个Map集合,key-map(正常存储是key-value,而hash存储的是map集合,所以key对应的value就是一个map)

==hset:设置一个key-value值、hget:获取值、hmset/hmget:设置/获取多个值、hgetall:获取所有值==

Hash
Hash

==hdel:删除hash指定key字段对应的value值==

Hash
Hash

==hlen:查看指定key的字段长度(即字段个数)==

Hash
Hash

==hexists:查看是否存在指定key==

==hkeys:只获取所有的key、hvals:只获取所有的value==

Hash
Hash

==hincrby:字段增加/或减少自定义数量(注意:这里没有hdecrby命令)==

==hsetnx:字段不存在则可设置,已存在则不可设置==

Hash
Hash

小结:

hash适合对经常变动的信息进行变更数据操作,例如用户信息name,age之类的。

hash适合对象的存储,String更加适合字符串的存储。

这里简单列举下hash和string存储的小小区别:

Hash String
user:1 name ethan user:1:name ethan
user:1 age 25 user:1:age 25

5. Zset(有序集合)

==zadd:添加值==

==zrangebyscore:对指定的key,通过score字段升序排序,可指定排序范围==

Zset
Zset
Zset
Zset

==zrevrangebyscore:对指定的key,通过score字段降序排序,可指定排序范围==

Zset
Zset

==zrem:移除指定key中的某个值==

Zset
Zset

==zcard:查询指定key的值的个数==

==zcount:查询指定key的指定score区间的个数==

Zset
Zset

小结:

1.有序集合Zset,可以用来存储成绩表、工资表这种;

2.也可以进行带权重的判断,比如:普通消息为1,重要消息为2;

3.排行榜的实现等等。

小程序码【兜里的猫】

小程序码

欢迎访问博客网页版:www.wldeer.com
关注公众号:(同步更新)【FreeWeb开发者】
# Redis 

评论

兜里的猫 : 是md
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×