作者处于学习阶段,刚刚完成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开始