redis常见数据类型

一.redis的五大数据类型

  • String 字符串
  • Hash 哈希,类似java中的Map
  • List 列表
  • Set 无序不重复的集合
  • Zset 有序集合(sorted set)

二.常用key的命令

  • keys * 查看所有的键值对
  • exists key的名字,判断某个key是否存在
  • move key db 当前库就没有了,被移除
  • expire key 秒钟:给定的key设置过期时间
  • ttl key 查看还有多少秒过期,-1表示永不过期,-2表示已过期
  • type key 查看你的key是什么类型

Redis 五大数据类型

Redis 五大数据类型有String 类型,Hash 类型,List 类型,Set 类型,Zset(Sortedset)类型。其中常用的是前三个。

官方提供的操作手册:http://redisdoc.com/

String 类型

String 是 redis 最基本的类型,一个key对应一个value。

赋值:set key value

取值:get key

批量赋值:mset key value ... keyN valueN

批量取值:mget key ... keyN

取值并赋值:getset key value

删除key:del key ... keyN

数值加一:incr key

数值加N:incrby key n

数值减一:decr key

数值减N:decrby key n

字符串追加:append key value

字符串长度:strlen key

127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3
OK
127.0.0.1:6379> mget k2 k3
1) "v2"
2) "v3"
127.0.0.1:6379> append k3 vv
(integer) 4
127.0.0.1:6379> get k3
"v3vv"
127.0.0.1:6379> strlen k2
(integer) 2
127.0.0.1:6379> strlen k3
(integer) 4
127.0.0.1:6379> keys *
1) "k3"
2) "k2"
3) "k1"
127.0.0.1:6379> del k2 k3
(integer) 2
127.0.0.1:6379> keys *
1) "k1"
127.0.0.1:6379> set k2 20
OK
127.0.0.1:6379> INCR k2
(integer) 21
127.0.0.1:6379> get k2
"21"
127.0.0.1:6379> INCRBY k2 20
(integer) 41
127.0.0.1:6379> get k2
"41"
127.0.0.1:6379> set k3 v3
OK
127.0.0.1:6379> APPEND k3 333
(integer) 5
127.0.0.1:6379> get k3
"v3333"

Hash 散列类型

Redis hash 是一个键值对集合,和Java 的HashMap 类似。

Redis hash 是一个String 类型的 field 和 value 的映射表,hash特别适合用于存储对象(key 可以是对象+id,field 是对象属性,value则是属性值)。

给一个字段赋值:hset key field value

给多个字段赋值:hmset key field value ... fieldN valueN

取一个字段的值:hget key field

取多个字段的值:gmset key field ... fieldN

取所有的字段名和值:hgetall key

删除字段名和值:hdel key field ... fieldN

判断字段是否存在:hexists key field

获取key的所有field:hkeys key

获取key的所有value:hvals key

获取field个数:hlen key

127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3
OK
127.0.0.1:6379> mget k2 k3
1) "v2"
2) "v3"
127.0.0.1:6379> append k3 vv
(integer) 4
127.0.0.1:6379> get k3
"v3vv"
127.0.0.1:6379> strlen k2
(integer) 2
127.0.0.1:6379> strlen k3
(integer) 4
127.0.0.1:6379> keys *
1) "k3"
2) "k2"
3) "k1"
127.0.0.1:6379> del k2 k3
(integer) 2
127.0.0.1:6379> keys *
1) "k1"
127.0.0.1:6379> set k2 20
OK
127.0.0.1:6379> INCR k2
(integer) 21
127.0.0.1:6379> get k2
"21"
127.0.0.1:6379> INCRBY k2 20
(integer) 41
127.0.0.1:6379> get k2
"41"
127.0.0.1:6379> set k3 v3
OK
127.0.0.1:6379> APPEND k3 333
(integer) 5
127.0.0.1:6379> get k3
"v3333"

 

List 类型

Redis 列表是采用来链表来存储的简单字符串列表,按照插入顺序排序。添加元素一般从链表两端开始。

向列表左侧加元素:lpush key value ... valueN

向列表右侧加元素:rpush key value ... valueN

遍历列表:lrange key startIndex endIndex

获取List长度:llen key

通过下标获取值:lindex key index

通过下标设置值:lset key index value

列表左侧移除第一个元素:lpop key

列表右侧移除第一个元素:rpop key

截取保留剩下的列表:ltrim key startIndex endIndex

在制定元素插入值:linsert key after/before index value

把集合第一个元素移到其他集合中:rpoplpush key otherListKey

注:若endIndex=-1 表示最后一位;otherListKey 表示其他集合

127.0.0.1:6379> lpush list 1 2
(integer) 2
127.0.0.1:6379> rpush list 3 4 
(integer) 4
127.0.0.1:6379> lrange list 0 -1
1) "2"
2) "1"
3) "3"
4) "4"
127.0.0.1:6379> lpop list
"2"
127.0.0.1:6379> rpop list
"4"
127.0.0.1:6379> llen list
(integer) 2
127.0.0.1:6379> lindex list 1
"3"
127.0.0.1:6379> linsert list after 1 2
(integer) 3
127.0.0.1:6379> linsert list before 3 4
(integer) 4
127.0.0.1:6379> ltrim list 0 1
OK
127.0.0.1:6379> rpoplpush list newlist
"1"

Set 类型

Redis 的 Set 是String类型的无序集合。它是通过HashTable实现实现的,用法和 List 类型很相似。

新增集合元素:sadd key value ... valueN

删除集合元素:srem key value ... valueN

获取集合所有元素:smembers key

判断集合元素是否存在:sismember key value

集合差集:sdiff key1 key2

集合交集:sinter key1 key2

集合并集:sunion key1 key2

获取集合长度:scard key1

127.0.0.1:6379> SADD testset a b c d e
(integer) 5
127.0.0.1:6379> SMEMBERS testset
1) "c"
2) "b"
3) "d"
4) "a"
5) "e"
127.0.0.1:6379> SREM testset d e
(integer) 2
127.0.0.1:6379> SISMEMBER testset a
(integer) 1
127.0.0.1:6379> SISMEMBER testset d
(integer) 0
127.0.0.1:6379> sadd testsetb a b c e f
(integer) 5
127.0.0.1:6379> SDIFF testset testsetb
(empty list or set)
127.0.0.1:6379> SDIFF testsetb testset
1) "f"
2) "e"
127.0.0.1:6379> SINTER testset testsetb
1) "a"
2) "b"
3) "c"
127.0.0.1:6379> SUNION testset testsetb
1) "f"
2) "a"
3) "e"
4) "b"
5) "c"
127.0.0.1:6379> SCARD testset
(integer) 3
127.0.0.1:6379>

Zset 类型

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

新增集合元素:zadd key score value ... scoreN valueN

获取元素分数:zscore key value

按照分数从小到大排序:zrange key startIndex endIndex

按照分数从大到小排序:zrevrange key startIndex endIndex

遍历时显示分数:withscores

统计分数比value少的个数:zrank key value

统计分数比value高的个数:zrevrank key value

输出分数在制定值内的元素:zrangebyscore key score1 score2

给元素加分:zincrby key score value

获取元素个数:zcard()

统计分数内的个数:zcount key score1 score2

删除制定排名内的元素:zremrangebyrank key no1 no2

删除指定分数内的元素:zremrangebyscore key score1 score2

删除指定元素:zrem key value

注: zcount 统计分数内的个数,score1 <= keyScore =< score2;zremrangebyrank 的 no1 和 no2 表示排名的第几位。

127.0.0.1:6379> zadd zset 65 A 67 C 66 B
(integer) 3
127.0.0.1:6379> zscore zset C
"67"
127.0.0.1:6379> zrange zset 0 -1
1) "A"
2) "B"
3) "C"
127.0.0.1:6379> zrevrange zset 0 -1
1) "C"
2) "B"
3) "A"
127.0.0.1:6379> zrevrange zset 0 -1 withscores
1) "C"
2) "67"
3) "B"
4) "66"
5) "A"
6) "65"
127.0.0.1:6379> zrank zset C
(integer) 2
127.0.0.1:6379> zrevrank zset C
(integer) 0
127.0.0.1:6379> zrangebyscore zset 65 66
1) "A"
2) "B"
127.0.0.1:6379> zrangebyscore zset 65 66 limit 1 2
1) "B"
127.0.0.1:6379> zincrby zset 10 A
"75"
127.0.0.1:6379> zcard zset
(integer) 3
127.0.0.1:6379> zcount zset 65 66
(integer) 1
127.0.0.1:6379> zremrangebyrank zset 0 1
(integer) 2
127.0.0.1:6379> zremrangebyscore zset 100 200
(integer) 0
127.0.0.1:6379> zrem zset A
(integer) 1

 

你可能感兴趣的:(redis,redis数据类型)