Redis的五大数据类型:String、List、Set、Hash和Zset。
String类型
String是redis最基本的类型,可以理解与Memcached一模一样的类型,一个key对应一个value。
String类型是二进制安全的,redis的String可以包含任何数据,比如jpg图片或者序列化的对象。
String类型是Redis最基本的类型,一个redis的字符串value最多可以是512M。
Hash类型
Redis Hash是一个键值对集合。
Redis Hash是一个String类型的field和value的映射表,特别适合用于存储对象,类似Java里面的Map<String, Object>。
List类型
Redis List是简单的字符串列表,按照插入顺序排序,你可以再列表的头部(左边)或者尾部(右边)添加元素,它的底层实现是个链表。
Set类型
Redis Set是String类型的无序集合,它是通过HashTable来实现的。
Zset类型(sorted set)
Redis Zset和Set都是String类型元素的集合,切不允许重复的元素,不同的是Zset的每一个元素都会关联一个double类型的分数,Redis正是通过分数来为集合中的元素进行从小到大的排序,Zset的元素是唯一的,但分数却可以重复。
Redis键(key)
常用命令
keys *, 列举当前数据库中的所有key值exists keyname, 判断当前库中是否存在这个keymove key DBNumber, 将当前库中的key以及对应的value剪切到另外一个库中(DBNumber :0-15)expire key seconds, 为给定的key设置过期时间ttl key, 查看还有多少秒过期,-1表示永不过期,-2表示已经过期type key, 查看key的类型
Redis字符串(String)
常用命令
set/get/del/append/strlenincr/decr/incrby/decrby, 一定要是数字才能进行运算
127.0.0.1:6379[6]> get k2
"v2aaa"
127.0.0.1:6379[6]> incr k2
(error) ERR value is not an integer or out of range
127.0.0.1:6379[6]> set k1 1
OK
127.0.0.1:6379[6]> incr k1
(integer) 2
127.0.0.1:6379[6]> decr k1
(integer) 1
127.0.0.1:6379[6]> incrby k1 10
(integer) 11
127.0.0.1:6379[6]> decrby k1 9
(integer) 2
127.0.0.1:6379[6]> type k1
string
getrange/setrange:getrange key start end,setrange key offset value
127.0.0.1:6379[6]> set k1 "1234567890"
OK
127.0.0.1:6379[6]> getrange k1 0 -1
"1234567890"
127.0.0.1:6379[6]> setrange k1 5 000
(integer) 10
127.0.0.1:6379[6]> getrange k1 0 -1
"1234500090"
setex/setnx:setex key seconds value,setnx key value
127.0.0.1:6379[6]> setex k2 100 v2
OK
127.0.0.1:6379[6]> setnx k2 3
(integer) 0
127.0.0.1:6379[6]> ttl k2
(integer) 86
127.0.0.1:6379[6]> get k2
"v2"
mset/mget/msetnx:mset key value [key value ...],mget key [key ...],msetnx key value [key value ...]
127.0.0.1:6379[6]> mset k1 v1 k2 v2 k3 v3 k4 v4
OK
127.0.0.1:6379[6]> mget k1 k2 k3 k4 k5
1) "v1"
2) "v2"
3) "v3"
4) "v4"
5) (nil)
getset:getset key value
Redis列表(List)
常用命令
lpush/rpush/lrange:lpush/rpush key value [value ...],lrange key start stop
127.0.0.1:6379[6]> lpush l1 1 2 3 4 5
(integer) 5
127.0.0.1:6379[6]> rpush l1 6 7 8 9
(integer) 9
127.0.0.1:6379[6]> lrange l1 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
6) "6"
7) "7"
8) "8"
9) "9"
lpop/rpop:lpop/rpop keylindex:lindex key index
127.0.0.1:6379[6]> lindex l1 0
"5"
llen:lrem:lrem key count value
127.0.0.1:6379[6]> lrem l1 2 1
(integer) 1
127.0.0.1:6379[6]> lrange l1 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
5) "6"
6) "7"
7) "8"
8) "9"
ltrim:ltrim key start stop,截取指定范围的值后在赋值给key
127.0.0.1:6379[6]> lpush l2 1 2 3 4 5 6 7 8 9
(integer) 9
127.0.0.1:6379[6]> ltrim l2 2 7
OK
127.0.0.1:6379[6]> lrange l2 0 -1
1) "7"
2) "6"
3) "5"
4) "4"
5) "3"
6) "2"
rpoplpush:rpoplpush source destination
Redis集合(Set)
常用命令
sadd/smembers/sismember:sadd key member [member ...],smembers key,sismember key member
127.0.0.1:6379[6]> sadd s1 1 2 3 4 5 6
(integer) 6
127.0.0.1:6379[6]> smembers s1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
127.0.0.1:6379[6]> sismember s1 7
(integer) 0
127.0.0.1:6379[6]> sismember s1 6
(integer) 1
scard:scard key, 获取集合里面元素的个数srem:srem key member [member ...]srandmember:srandmember key [count]
127.0.0.1:6379[6]> srandmember s1 2
1) "2"
2) "5"
spop:spop key [count],随机出栈若干个元素smove:smove source destination membersdiff:sdiff key [key ...]sinter:sinter key [key ...]sunion:sunion key [key ...]
Reids哈希(Hash)
常用命令
hset/hget/hmset/hmget/hgetall/hdel:
127.0.0.1:6379[6]> hset h1 f1 v1
(integer) 1
127.0.0.1:6379[6]> hget h1 f1
"v1"
127.0.0.1:6379[6]> hmset h1 f2 v2 f3 v3
OK
127.0.0.1:6379[6]> hmget h1 f1 f2
1) "v1"
2) "v2"
127.0.0.1:6379[6]> hgetall h1
1) "f1"
2) "v1"
3) "f2"
4) "v2"
5) "f3"
6) "v3"
127.0.0.1:6379[6]> hdel h1 f3
(integer) 1
hlenhexists:hexists key fieldhkeyskvalshincrby/hincrbyfloat:hincrby key field increment,hincrbyfloat key field incrementhsetnx:hsetnx key field value
Reids有序集合(Zset)
常用命令
zadd/zrange:zadd key [NX|XX] [CH] [INCR] score member [score member ...],zrange key start stop [WITHSCORES]
127.0.0.1:6379[6]> zadd zs 1 a 2 b 3 c
(integer) 3
127.0.0.1:6379[6]> zrange zs 0 -1
1) "a"
2) "b"
3) "c"
zrangebyscore:zrangebyscore key min max [WITHSCORES] [LIMIT offset count]
127.0.0.1:6379[6]> zrangebyscore zs 1 3 withscores
1) "a"
2) "1"
3) "b"
4) "2"
5) "c"
6) "3"
zrem:zrem key member [member ...]zcard/zcount:zcard key,zcount key min maxzrank/zrevrank:zrank key member,zrevrank key member
127.0.0.1:6379[6]> zrank zs a
(integer) 0
127.0.0.1:6379[6]> zrevrank zs a
(integer) 2
zrevrange/zrevrangebyscore:zrevrange key start stop [WITHSCORES],zrevrangebyscore key max min [WITHSCORES] [LIMIT offset count]