Redis基本数据类型和API运用

我就是我 2023-06-15 07:11 21阅读 0赞

一、序言

Redis是一个基于内存亦可持久化的日志型数据结构存储,基于RESP协议进行通讯,可用于数据库、缓存和消息队列。协议简单,数据在内存中进行操作同时又是单线程运行,避免了资源竞争以及线程之间上下文切换的开销,因此Redis的速度很快。但同时也存在一个请求独大的问题,如果某个命令处理很慢,会导致其他命令一直处于阻塞状态。

二、RESP协议

Redis是使用RESP协议进行通讯,底层其实也是TCP协议,RESP协议的数据形式很简单,*后面数量表示存在几个$,$后面数量表示字符串的长度,例如:

  1. *3
  2. $3
  3. SET
  4. $5
  5. key
  6. $7
  7. value

合并之后的数据便是:”*3\r\n$3\r\nSET\r\n$5\r\nkey\r\n$7\r\nvalue\r\n”,Redis中回复也是使用这种格式。

Redis中提供了5中基本数据类型方便数据的操作,分别是:string、list、hash、set、zset。

三、字符串(String)

在Java中,万物皆对象,也皆可变成string,包括XML,JSON,数字,二进制文件(图片 音频、视频),最大不能超过512MB。

  1. --设置值
  2. set key value ex 10 //设置kv,10秒后过期
  3. setnx key value //key不存在,设置value成功返回1,存在则添加失败返回0
  4. mset key value key2 value2... //批量设置值
  5. append key value //字符串追加
  6. --获取值
  7. get key //存在则返回value, 不存在返回nil
  8. mget key key2 key3... //批量获取值
  9. strlen key //获取字符串长度
  10. getrange key 2 4 //截取字符串
  11. --计数
  12. incr key //value+1,非整数返回错误,key不存在设置value为1,返回1
  13. decr key //value-1
  14. incrby key n //value+n
  15. decrby key n //value-n
  16. incrbyfloat key 1.1 //浮点型key+1.1

四、Hash

hash可以看成是一个映射表类型的存储结构,有点类似于Java中的Map这种结构,适合存储对象。

  1. hset key field value //设值,成功返回1,失败返回0
  2. hget key field //取值,返回field对应的值
  3. hdel key field //删除值,返回删除的个数
  4. --计算field个数
  5. hset key field value; hset key field2 value2;
  6. hlen key //返回2,key中有两个属性值
  7. --批量设值
  8. hmset key field value field2 value2 field3 value3 ...
  9. --批量取值
  10. hmget key field field2 field3
  11. hexists key field //判断field是否存在,若存在返回1,不存在返回0
  12. hkeys key //获取所有field
  13. hvals key //获取所有value:
  14. hgetall key //获取所有field与value:
  15. hincrby key field 1 //增加
  16. hincrbyfloat key field 2 //浮点型增加

五、List

list可用来存储多个有序的字符串,一个列表最多可存2的32次方减1个元素,可以看成是一个消息队列。因为有序,可以通过索引下标获取元素或某个范围内元素列表,列表元素可以重复。

  1. --添加命令:
  2. rpush key c b a //从右向左插入cba, 返回值3
  3. lrange key 0 -1 //从左到右获取列表所有元素 返回 c b a
  4. lpush key c b a //从左向右插入cba
  5. linsert key before b c //在b之前插入c, after为之后
  6. --查找命令:
  7. lrange key start end //索引下标特点:从左到右为0到N-1
  8. lindex james -1 //返回最右末尾值,-2返回倒数1第二个
  9. llen key //返回当前列表长度
  10. lpop key //把最左边的第一个元素c删除
  11. rpop key //把最右边的元素a删除

六、Set

set保存多元素,与列表不同的是不允许有重复元素,且集合是无序,一个集合最多可添加231-1个元素,除了支持增删改查,还支持集合交集、并集、差集;

  1. sadd key a b c //向key中插入3个元素,返回3
  2. sadd key a b //若再加入相同的元素,则重复无效,返回0
  3. smember key //获取key的所有元素,返回结果无序
  4. srem key a //返回1,删除a元素
  5. scard key //返回2,计算元素个数
  6. sinter key1 key2 //计算集合的交集,可用于智能推荐

七、ZSet

zset常用于排行榜,如视频网站需要对用户上传视频做排行榜,或点赞数。与集合有联系,不能有重复的成员,有序,根据score排序。

  1. zadd key score member //基本命令
  2. zadd key 200 member //返回操作成功的条数1
  3. zadd key 200 member 120 member2 100 member3 ... // 批量添加,操作成功返回操作总条数3
  4. zadd key nx 100 member //键key必须不存在,主用于添加
  5. zadd key xx incr 200 member //键key必须存在,主用于修改,此时为300
  6. zadd key xx ch incr -n member //减少分数,返回操作结果
  7. zrange key 0 -1 withscores //查看分数与成员
  8. zcard key //计算成员个数
  9. zrank key member //返回名次,下表从0开始
  10. zrevrank key member //反排序,score越高,排名越前

八、Redis全局命令

适用于所有数据类型的指令

  1. keys * //查看所有键
  2. dbsize //查看键总数,如果存在大量键,禁止使用此指令
  3. exists key //检查键是否存在,存在返回1,不存在返回0
  4. del key //删除键, 返回删除键个数,删除不存在键返回0
  5. expire key seconds //设置键过期时间
  6. ttl key //查看剩余的过期时间
  7. type key //查询键的数据结构类型,不存在返回none

发表评论

表情:
评论列表 (有 0 条评论,21人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Redis基本数据类型API运用

    一、序言 Redis是一个基于内存亦可持久化的日志型数据结构存储,基于RESP协议进行通讯,可用于数据库、缓存和消息队列。协议简单,数据在内存中进行操作同时又是单线程运行

    相关 Redis基本数据类型—字符串类型

    字符串类型是Redis中最基本的数据类型,它可以存储任何形式的字符串,包括二进制数据。其他的类型都是以字符串类型为基础,可以看作是字符串类型的不同组织形式。 1、赋值与取值

    相关 Redis基本数据类型——列表类型

    列表类型可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素、或者获取列表某一个片段。 Redis的列表类型是使用双向链表实现的。向两端添加、删除元素的时间复杂度为O