Redis学习笔记——数据类型

五大数据类型

字符串 String

(1)最基本的类型,一个Key对应一个Value。
(2)String类型是二进制安全的,redis的String可以包含任何数据,比如Jpg图片或者序列化的对象。
(3)一个Redis的字符串value最多是512M(理论)。

哈希 Hash(类似Map)

(1)hash是一个键值对集合。
(2)hash是一个string类型的field和value的映射表,hash特别适合用于存储对象
类似于Java里面的Map<String,Object>

列表 List

Redis列表是简单的字符串列表,按照插入顺序排序,你可以添加一个元素到列表的头部或者尾部,底层实际是个链表。

集合 Set

Redis的Set是String类型的无序集合,他是通过HashTable实现的。

有序集合 Zset(Sorted Sets)

Redis的Zset和set一样也是String类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数
Redis正是通过分数来为集合中的成员进行从小到大的排序,Zset的成员是唯一的,但分数(Score)却可以重复。

数据类型操作命令

操作命令大全:http://redisdoc.com/

键(KEY)

(1)keys *,按条件列出Key值
(2)exists key的名字,判断某个key是否存在。
(3)move key db,当前库就没有了,被移除了(移动、剪切功能)
(4)expire key 秒钟,为给定的key设置过期时间
(5)ttl key,查看还有多少秒过期,-1表示永不过期,-2表示已经过期
(6)type key,查看你的key是什么类型

字符串(String)

单值单Value。
(1)set、get、del、append、strlen,顾名思义:设置,获取,删除,追加,返回长度。

(2)incr、decr、incrby、decrby,一定要是数字才能进行加减
incr和decr递增和递减,incrby和decrby指定加减某数字,incrby k2 3,即K2的Value加3。

(3)getrange、setrange:
getrange用法:getrange key start end,返回指定区间的字符串。
setrange用法:setrange key offset value,从offset位置开始设置value,覆盖。

(4)setex、setnx:
setex用法:setex key second value,(set with expire)设置一个自带过期时间的KV对。
setnx用法:setnx key value,(set in not exist)若不存在才设置,相比set不会覆盖。

(5)mset、mget、msetnx:m是more的意思
mset用法:mset key value [key value ...],设置多个值
mget用法:mget key [key ...],获取多个值
msetnx用法:msetnx key value [key value ...],同上,不覆盖,注意失效一锅端,其中一个存在,其他的都不会设置进去,有点类似于事务的提交和回滚。

列表(List)

单值多Value。

常用用法

(1)lpush、rpush、lrange:
lpush用法:lpush key value [value ...],左侧(头部)插入,使用lrange后进先出倒序输出。
rpush用法:rpush key value [value ...],右侧(尾部)插入,使用lrange先进先出正序输出。
lrange用法:lrange key start end,指定的Key的范围从start到end输出,类型必须为list,从头部开始输出。

(2)lpop、rpop:
lpop用法:lpop key,弹出栈顶元素。
rpop用法,rpop key,弹出栈尾元素。

(3)lindex:lindex key index,按照索引下标获取元素,从上到下(左到右,头到尾)。

(4)llen:返回list长度。

(5)lrem:lrem key count value,删除count个value值,从头到尾进行删除,若没有则返回0。

(6)ltrim:ltrim key start end,截取指定范围的值后再赋值个Key,相当于subString。

(7)rpoplpush:rpoplpush source destination,用源列表底部弹出,从头部插入到目标列表。
在这里插入图片描述

(8)lset:lset key index value,对某个索引的value进行设值。

(9)linset:linsert key BEFORE|AFTER pivot value,在第一个pivot的前面或后面,插入一个value。

总结

它是一个字符串链表,left、right都可以插入删除。
若键不存在,创建新的链表;
若键已经存在,新增内容;
如果值全部移除,对应的键也就消失了;
链表的操作无论是头和尾效率都极高,但对中间元素进行操作,效率就很低下。

集合(Set)

单值多Value。

常用用法

(1)sadd、smembers、sismember:
sadd用法:sadd key value [value ...],插入一个或多个值,会自动去掉重复的元素进行插入。
smembers用法:smembers key,查看某个key的set集合的值。
sismember用法:sismember key value,查看key对应的set集合是否包含value,包含返回1,否则返回0。

(2)scard:scard key,获取集合里面元素的个数。

(3)srem:srem key value [value ...],删除集合中的单个或多个元素。

(4)srandmember:srandmember key [count],从指定集合中随机返回count个元素。

(5)spop:spop key [count],随机出count个元素。

(6)smove:smove source destination value,从source中删除,增加到destination中。

(7)数学集合类:差集、交集、并集
差集sdiff:sdiff key [key ...],以第一个为全集,减去后面的元素。
交集sinter:sinter key [key ...],求几个set集合的交集。
并集sunion:sunion key [key ...],求几个set集合的并集。

哈希(Hash)

KV模式不变,但是value是一个键值对。

常用用法

(1)hset、hget、hmset、hmget、hgetall、hdel
hset用法:hset key field value,设置key对应的field的值。
hget用法:hget key field,获取key的field对应的value。
hmset用法:hmset key field value [ field value ...],设置key对应的多个field的值。
hmget用法:hmget key field [field ...],获取key的多个field对应的value。
hgetall用法:hgetall key,获取对应key的全部[key value]。
在这里插入图片描述
hdel用法:hdel key field [field ...],删除指定key的指定field(多个)的值。

(2)hlen:hlen key,返回指定key对应的field的个数。

(3)hexists:hexists key filed,判断指定key是否具有某个field,有返回1,否则返回0。

(4)hkeys、hvals:
hkeys用法:hkeys key,返回指定key对应的所有field。
hvals用法:hvalskey,返回指定key的所有field的所有value。

(5)hincrby、hincrbyfloat:
hincrby用法:hincrby key field increment,指定key的指定field进行加increment(整数,可以是负数,减法),必须是数字类型。
hincrbyfloat用法:hincrbyfloatkey field increment,指定key的指定field进行加increment(小数,可以是负数,减法),必须是数字类型。

(6)hsetnx:hsetnx key field value,没有才设置,不会进行覆盖(putIfAbsent)。

有序集合(Zset)

在set的基础上,加了一个score值,如之前是set是k1 v1 v2 v3,现在zset是k1 score1 v1 score2 v2…。

常用用法

(1)zadd、zrange:
zadd用法:zadd key score value [score value ...],给value前面加上一个score值,用于排序。
zrange用法:zrange key start end [withscores],按照score从小到大输出set集合,如果带上参数withscroes则输出的是value+score,注意若分数相同,采用的稳定的(相对位置不变)排序算法进行排序输出。

(2)zrangebyscore:zrangbyscore key min max [withscores] [limit offset count],从min的分数到max的分数的value值进行输出,注意:(代表不包含,如zrangbyscore zset01 (60 (80,意思是输出分数大于60小于80的value值。limit相当于分页(在有限的第一次结果集中再次截取),从offset开始,输出count个。

(3)zrem:zrem key member [member ...],从集合中删除某个Value。

(4)zcard、zcount:
zcard用法:zcard key,统计value的个数。
zcount用法:zcount key min max,统计score从min到max的value个数,这里同样可以使用(取开区间。

(5)zscore:zscore key value,拿到该Value对应的score。

(6)zrank、zrevrank:
zrank用法:zrank key value,拿到该Value对应的score的排名,即下标。
zrevrank用法:zrevrankkey value,拿到该Value对应的score的逆序排名。

(7)zrevrange:zrevrange key start end,按照分数从大到小输出set集合。

(8)zrevrangebyscore:zrevrangebyscore key max min,score满足从max到min的value进行输出,同样(生效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值