关闭

redis基础数据类型详解

标签: redis缓存redis入门
412人阅读 评论(0) 收藏 举报
分类:

redis类型

  • redis一共分为五种基本数据类型:String、Hash、List、Set、ZSet
  • 查看redis命令帮助 help 命令名

String类型

String类型是包含很多种类型的特殊类型,并且是二进制安全的。比如序列化的对象进行存储,比如一张图片进行二进制存储,比如一个简单的字符串,数值等。

set、get和del方法:

  • 设置值:set name redis
  • 取值: get name
  • 删除值: del name

使用setnx (not exist)

  • 表示如果不存在key进行设置,返回1。存在就不需要设置了,返回0
127.0.0.1:6379> setnx name aa
(integer) 0

使用setex (expired)

  • set color 10 red 设置color的有效期为10秒,10秒返回 nil (在redis中nil表示null)

使用setrange 替换字符串

  • set mail 123456@qq.com 替换字符串 setrange mail 5 abc (5表示从第几位开始替换,不包含开始位置,后面跟上替换的字符串),如下图:
    setrange结果

一次性设置或者获取多个值mset、mget 方法

  • mset k1 123 k2 abc k3 ofg
  • mget k1 k2 k3
    mset和mget

一次性获取设置getset方法

  • getset k4 abcd 先返回k4的值然后设置k4的值为 abcd
    setget

incr和decr方法

  • 对某个值进行递增和递减。incr age decr age

incrby和decrby方法

  • 对某个值指定长度的递增和递减。
  • incrby age 5 增加5
  • decrby age 6 减少6

append方法追加字符串

  • append key value
  • append name nosql 为key为name的值追加nosql

strlen方法获取key的长度

  • strleng key 返回该key的value的长度

Hash类型

Hash类型是String类型的field和value的映射表,或者说一个String集合。它特别适合存储对象,相比而言,将一个对象类型存储在Hash类型里要比存储在String类型里占用更少的内存空间,并方便存取整个对象。

设置和获取Hash方法

  • 通过 hset 设置Hash类型的值。hset user id 1 表示设置Hash的值为 user,里面有keyidvalue为1。
  • 通过 hget 获取Hash类型的值。hget user id 表示获取Hash的值为 userkeyid的值。
  • 也可以批量设置和获取值。通过hmset user id 2 name zs age 20 sex manhmget user id name age sex
    hash类型的hset和hget
    hash中的hmset和hmget

Hash类型的其他常用方法

  • hsetnx:这个和setnx类似,表示如果不存在就设置,存在就不设置。
  • hincrby:集合递增,类似于incrby
  • hexists:是否存在key,如果存在返回值,不存在返回0
  • hlen:返回hash集合里面的所有键数值。
  • hdel:删除指定hash中的字段。
  • hkeys:返回hash中的所有key。
  • hvales:返回hash中的所有value。
  • hgetall:返回hash里的所有key和value。
    hash其他命令

List类型

List类型是一个链表结构的集合,其主要功能有push、pop、获取元素等。更加具体来说,List类型是一个双链表的结构,我们可以通过相关操作在集合的头部和尾部进行操作,List的可以作为栈,也可以作为队列。

lpush和lrange方法

  • lpush从头部加入元素(栈)先进后出,返回集合中元素个数。lpush list hello 向名为list集合中添加hello
  • lrange获取栈的元素,返回集合中的元素。lrange list 0 -1 获取list 集合全部元素。
    list集合的lpush和lrange方法

rpush方法

  • rpush 方法从尾部加入元素,先进先出。rpush list2 hello 向集合list2中添加hello
  • lrang获取集合中的元素。
    List类型中的rpush方法

linsert方法

  • 插入元素。linsert num before three two
    list集合linsert

lset方法

  • 将指定下标的元素替换掉。从0开始
    list类型的lset方法

lrem方法

  • 删除元素,返回删除元素个数
    list类型的lrem方法

ltrim方法

  • 保留指定范围内的元素,截取集合
    list类型的ltrim方法

lpop方法

  • 从list的头部删除元素,并返回删除元素
    list集合的lpop方法

rpop方法

  • 从list的尾部删除元素,并返回删除元素
    List类型中的rpop方法

Set类型

Set集合是String类型的无序集合,Set是通过HashTable实现的,对集合我们可以取交集、并集、差集。

sadd方法

  • 向名称为key的set中添加元素。sadd set1 abc 也可以批量添加 sadd set1 abc bdf
  • set集合不允许添加重复元素。
    set集合的sadd方法

smembers方法

  • 查看set集合元素。
    set集合的smembers方法

srem方法

  • 删除set集合元素
    set集合的srem方法

spop方法

  • 随机返回删除的member
    set集合的spop方法

sdiff方法

  • 返回两个集合的不同元素,哪个集合在前面就以哪个集合为标准。
    set集合的sdiff方法

sdiffstore方法

  • 将返回的不同元素存储到另一个集合里。
    set集合的sdiffstore方法

sinter方法

  • 两个集合取交集。
    set集合的sinter方法

sinterstore方法

  • 返回交集结果,存储到另一个集合中
    set集合的sinterstore方法

sunion方法

  • 取并集。
    set集合的sunion方法

sunionstore方法

  • 取并集,并存储到另一个集合中
    set集合的sunionstore方法

smove方法

  • 从一个set集合移动到另一个set集合,相当于剪切复制。
    set集合的smove方法.

scard方法

  • 返回集合的元素个数,scard 集合名

sismember方法

  • 判断某元素是否为集合中的元素,返回1代表是集合中的元素,0代表不是
    set集合的sismember方法

srandmember方法

  • 随机返回一个元素
    set集合的srandmember方法

zset集合类型

set集合的升级版,集合是有序的。

zadd方法

  • 向有序集合中添加一个元素,该元素如果存在,则更新顺序。在重复插入的时候,会根据顺序属性更新。
    zset集合的zadd方法.jpg

zrange方法

  • 查看zset集合数据。
    zset集合的zadd方法.jpg

zrem方法

  • 删除名称为key的zset中的元素member
    zset集合的zadd方法.jpg

zincrby方法

  • 以指定值去自增或自减,用法和incrby类似

zrangebyscore方法

  • 找到指定区间范围的数据进行返回。
    zset集合的zadd方法.jpg

zremrangebyrank方法

  • 删除索引范围的member
    zset集合的zadd方法.jpg

zremrangebyscore方法

  • 删除指定序号,通过分数范围删除,包含头、包含尾
    zset集合的zremrangebyscore方法

zrank方法

  • 返回排序序号,从0开始
    zset集合的zrank方法

zrevrank方法

  • 返回排序索引,从大到小的顺序,从0开始
    zset集合的zrevrank方法

zrangebyscore 方法

  • 找到指定区间的数据并返回
  • 通过上图我们可以看出zrangezrangebyscore 方法的区别是,一个通过索引范围查找,一个通过分数范围查找

zcard方法

  • 返回集合中所有元素的个数
    zset集合的zcard方法

zcount方法

  • 返回集合中score在给定区间的数量
    zset集合的zcount方法
2
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    欢迎关注个人微信号
      欢迎关注微信账号:在路上的coder .每天一篇java相关或互联网相关的文章




    个人资料
    • 访问:795405次
    • 积分:2722
    • 等级:
    • 排名:第14050名
    • 原创:86篇
    • 转载:4篇
    • 译文:0篇
    • 评论:21条
    资源分享地址
    个人博客地址
    博客专栏
    最新评论