目录
Redis系列之三------ Redis 的数据类型
一、Redis的五大数据类型
1、string(字符串)
- string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
- string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
- string类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512M
2、hash(哈希,类似java里的Map)
- Redis hash 是一个键值对集合。
- Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
- 类似Java里面的Map
3、list(列表)
- Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)。
- 它的底层实际是个链表
4、set(集合)
- Redis的Set是string类型的无序集合。它是通过HashTable实现实现的
5、zset(sorted set:有序集合)
- Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
- 不同的是每个元素都会关联一个double类型的分数。
- redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。
二、Redis 键(key)
1、常见的命令
2、案例
keys * 查看所有key
exists key的名字, 判断某个key是否存在
move key db 当前库就没有了,被移除了
expire key 秒钟: 为给定的key设置过期时间
ttl key 查看还有多少秒过期,-1表示永不过期,-2表示已过期
type key 查看你的key是什么类型
三、Redis字符串(String)
1、常见命令
2、案例
- getrange/setrange
getrange:获取指定区间范围内的值,类似between......and的关系 从零到负一表示全部
setrange设置指定区间范围内的值,格式是setrange key值 具体值
setex(set with expire)键秒值/setnx(set if not exist)
setex:设置带过期时间的key,动态设置。 setex 键 秒值 真实值
setnx:只有在 key 不存在时设置 key 的值。
mset/mget/msetnx
mset:同时设置一个或多个 key-value 对。
mget:获取所有(一个或多个)给定 key 的值。
msetnx:同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。
getset(先get再set)
getset:将给定 key 的值设为 value ,并返回 key 的旧值(old value)。 简单一句话,先get然后立即set
![]()
四、Redis列表(List)
1、常用命令
2、案例
- lpush/rpush/lrange
-
lpop/rpop
-
lindex,按照索引下标获得元素(从上到下)
-
llen
-
lrem key 删N个value
- ltrim key 开始index 结束index,截取指定范围的值后再赋值给key
- rpoplpush 源列表 目的列表 移除列表的最后一个元素,并将该元素添加到另一个列表并返回
-
lset key index value
-
linsert key before/after 值1 值2
五、Redis集合(Set)
1、常用命令
2、案例
- sadd/smembers/sismember sadd 只能插入该集合中唯一的值(可一次添加一个或多个值) smenbers 是查询集合的所有值。 sismember 是查看该值是否存在。
-
scard,获取集合里面的元素个数
-
srem key value 删除集合中元素
-
srandmember key 某个整数(随机出几个数)
- spop key 随机出栈
-
smove key1 key2 在key1里某个值 作用是将key1里的某个值赋给key2
- 差集:sdiff
- 交集:sinter
- 并集:sunion
六、Redis哈希(Hash)
1、常用命令
2、案例
- hset/hget/hmset/hmget/hgetall/hdel
-
hkeys/hvals
- hincrby/hincrbyfloat
- hsetnx
六、Redis有序集合Zset(sorted set)
1、与set 的对比
在set基础上,加一个score值。之前set是k1 v1 v2 v3,现在zset是k1 score1 v1 score2 v2
2、常用命令
3、案例
-
zadd/zrange
-
zrangebyscore key 开始score 结束score
-
zrem key 某score下对应的value值,作用是删除元素 zrem key score某个对应值,可以是多个值
-
zcard/zcount key score区间/zrank key values值,作用是获得下标值/zscore key 对应值,获得分数
zcard :获取集合中元素个数
zcount :获取分数区间内元素个数,zcount key 开始分数区间 结束分数区间
zrank: 获取value在zset中的下标位置
zscore:按照值获得对应的分数
-
zrevrank key values值,作用是逆序获得下标值
-
zrevrange
- zrevrangebyscore key 结束score 开始score