redis学习笔记(二)之redis的常用五大数据类型,以及其常用命令

5 篇文章 0 订阅
4 篇文章 0 订阅

        作者处于学习阶段,刚刚完成redis的学习,作为学生,我会用更通俗的说法,来叙述自己对redis的了解。愿各位大佬看到有见解错误的地方和叙述不好的地方,能够帮忙纠正。来帮助大家更加深入的了解redis。

一、key相关命令

keys *查看所有的key
exists key判断某个key是否存在
type key查看key的类型
del key删除指定的key数据,key和value全部删除
expire key seconds为指定的key设置过期期间,过期时间为seconds秒
ttl key查看给定的key设置过期时间,正数:过期剩余时间,-1:永不过期,-2:已过期
dbsize查看key的数量
flushdb清空当前库
flushall清空所有库

二、 字符串(String)

        1.简介

字符串是最基本的 Redis 值。Redis 字符串是二进制安全的,这意味着 Redis 字符串可以包含任何类型的数据,例如 JPEG 图像或序列化的 Ruby 对象。与我们java中的String所存的类型类似,其中value最多存512MB

        2.常用命令

        

set <key><value>添加键值对(当key不存在时,直接添加。存在时,将原有值替换)
get <key>根据key查询对应value值
append <key><value>将value加入key相匹配的value值末尾
strlen <key>key对应value的长度
setnx <key><value>当key不存时,添加该键值对
incr <key>将key中存储的数字值加1,只能对数字操作,如果为空则认为是0+1
decr <key>

将key中存储的数字值减1,只能对数字操作,如果为空则认为是0-1

mset <key1> <value1> <key2> <value2>......可以一次性设置多个键值对
mget <key1><key2><key3>...可以一次性获取多个value值
msetnx <key1><value1> <key2><value2>当key都不存在时,才会设置多个键值对

三、列表List

        1.简介

        Redis 列表是简单的字符串列表,按插入顺序排序。可以将元素添加到 Redis 列表中,将新元素推送到列表的头部(左侧)或尾部(右侧)。

        lpush命令在头部插入一个新元素,而 RPUSH尾部插入一个新元素。当对空键执行此操作之一时,将创建一个新列表。同样,如果列表操作将清空列表,则从键空间中删除键。

        列表的最大长度为 2^32 - 1 个元素(4294967295,每个列表超过 40 亿个元素)。

        Redis Lists 的主要特点是支持恒定时间插入和删除靠近头部和尾部的元素,即使插入了数百万个元素。访问列表的极端附近的元素非常快,但如果您尝试访问一个非常大的列表的中间,则速度很慢,因为这是一个 O(n) 操作。

        2.常用命令

        

lpush/rpush <key> <value1><value2>.......从左边/右边插入一个或多个值
lpop/rpop <key>从左边/右边吐出一个值,当列表空时,则消失
rpoplpush <key1><key2>从<key1>列表右边吐出一个值,插入到<key2>列表左边
lrange <key> <start> <stop>从左边第(start+1)个到右边第(end+1)个结束,当start=0,end=-1时,表示所有
lindex <key> <index>从左往右数第(index+1)对应的元素
llen <key>获取列表长度
linsert <key> before <value><newvalue>在<value>的后面插入<newvalue>
lrem <key><n><value>

从左边删除n个value(从左到右)

lset<key><index><value>将列表key下标为index的值替换成value

四、集合Set

        1.简介

        Redis Set 是字符串的无序集合。可以在 O(1) 中添加、删除和测试成员的存在(无论集合中包含的元素数量如何,都是恒定的时间)。

        Redis Set 具有不允许重复成员的理想属性。多次添加相同的元素将导致集合具有该元素的单个副本。实际上,这意味着添加成员不需要检查是否存在然后添加操作。

        Redis Sets 的一个非常有趣的地方是,它们支持许多服务器端命令来从现有集合开始计算集合,因此您可以在很短的时间内进行集合的并集、交集、差集。

集合中的最大成员数为 2^32 - 1(4294967295,每组超过 40 亿个成员)。

         

sadd <key> <value1> <value2>......将一个或多个value元素加入到集合Key中,已经存在的value会被忽略
smembers <key>取出该集合的所有值
sismember <key><value>判断集合中是否为含有<value>值,有返回1,没有返回0
scard<key>返回该集合的元素个数
srem <key><value1><value2> ....删除集合中的一个或多个元素
spop <key>随机从该集合中吐出一个值。
srandmember <key><n>随机从该集合中取出n个值。不会从集合中删除
smove <source><destination><value>将source集合中的值value移动到destination集合中
sinter <key1><key2>返回两个集合的交集元素
sunion <key1><key2>返回两个集合的并集元素
sdiff <key1><key2>

key1中与key2不同的元素

五、 哈希(Hash)

        1.简介

        哈希是字符串字段和字符串值之间的映射,因此它们是表示对象的完美数据类型(例如,具有许多字段的用户,如姓名、姓氏、年龄等),类似于JAVA中的Map<String,Object>集合。

        具有几个字段(其中几个字段意味着最多一百个左右)的哈希以占用非常少的空间的方式存储,因此您可以在一个小型 Redis 实例中存储数百万个对象。

        虽然哈希主要用于表示对象,但它们能够存储许多元素,因此您也可以将哈希用于许多其他任务。

        每个散列最多可以存储 2^32 - 1 个字段值对(超过 40 亿个)。

        

hset <key> <field> <value>给集合中的  <field>键赋值<value>
hget <key1> <field>从集合<field>取出 <value>
hmset <key1><field1><value1><field2><value2>...为集合中多个<field>键复制<value>
hexists<key1><field>查看集合中,field 是否存在
hkeys <key>遍历出集合中所有的field
hvals <key>遍历出集合中所有的value
hincrby <key><field><increment>为集合中的field 的值加上增量increment
hsetnx <key><field><value>将集合中的field的值设置为 value ,并且只有当field不存在时

 六、有序集合(sorted set)

        1.简介

        sorted set与set集合类似,是字符串的非重复集合。不同之处在于,Sorted Set 的每个成员都与一个分数相关联,用于保持sorted set的顺序,从最小到最大的分数。虽然成员是唯一的,但分数可能会重复。

        您可以以非常快速的方式添加、删除或更新元素(时间与元素数量的对数成正比)。由于元素是按顺序存储的,而不是事后排序的,因此您还可以通过分数或排名(位置)以非常快速的方式获取范围。访问 Sorted Set 的中间也非常快,因此您可以将 Sorted Sets 用作非重复元素的智能列表,您可以在其中快速访问所需的一切:元素按顺序、快速存在测试、快速访问中间元素!

        2.常用命令

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 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。

zrevrangebyscore key maxmin [withscores] [limit offset count]返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从大到小)次序排列。
zincrby <key><increment><value> 为元素的score加上增量
zrem  <key><value>删除该集合下,指定值的元素
zcount <key><min><max>

统计该集合,分数区间内的元素个数

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱分享的小邓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值