Redis data types
Redis supports five data types: String (String), Hash (hash), List (list), Set (collection) and Zset (sorted set: an ordered set).
Five data types usage scenarios
Redis-server connection
1 $redis-cli 2 redis 127.0.0.1:6379> 3 redis 127.0.0.1:6379> PING 4 5 $ redis-cli -h host -p port -a password
Redis的key
Normal operation (More Actions https://www.runoob.com/redis/redis-keys.html )
1 Keys * # list all the key 2 EXISTS key # to determine whether there is a key 3 the Move key db # currently there is no library, other libraries removed the 4 The expire key # seconds: set the expiration for a given key Of course, there are times in milliseconds and so on 5 ttl key # to see how long expired -1 means never expire -2 is already expired 6 of the type key # to view key type
In the end the demo
[root@localhost ~]# redis-cli 127.0.0.1:6379> keys * (empty list or set) 127.0.0.1:6379> set k1 v1 OK 127.0.0.1:6379> set k2 v2 OK 127.0.0.1:6379> set k3 v3 OK 127.0.0.1:6379> exists k1 (integer) 1 127.0.0.1:6379> move k1 2 (integer) 1 127.0.0.1:6379> keys * 1) "k3" 2) "k2" 127.0.0.1:6379> ttl key (integer) -2 127.0.0.1:6379> select 2 OK 127.0.0.1:6379[2]> get k1 "v1" 127.0.0.1:6379[2]> select 0 OK 127.0.0.1:6379> keys * 1) "k3" 2) "k2" 127.0.0.1:6379> ttl k1 (integer) -2 127.0.0.1:6379> ttl k2 (integer) -1 127.0.0.1:6379> expire k2 10 (integer) 1 127.0.0.1:6379> ttl k2 (integer) 3 127.0.0.1:6379> get k2 (nil) 127.0.0.1:6379> keys * 1) "k3" 127.0.0.1:6379> type k3 string
Redis的String
General Command (More Actions https://www.runoob.com/redis/redis-strings.html )
. 1 SET / GET / del / the append / strlen 2 Incr is / DECR / incrby / decrby # it must be performed before the digital subtraction . 3 GetRange / SetRange . 4 SETEX (SET The expire with) second key value / SETNX (SET IF Not exist) . 5 MSET / mget / msetnx 6 getset (to get re-set)
Terminal Operations
127.0.0.1:6379> set k3 woshiniba OK 127.0.0.1:6379> get k3 "woshiniba" 127.0.0.1:6379> append k3 12345 (integer) 14 127.0.0.1:6379> get k3 "woshiniba12345" 127.0.0.1:6379> strlen k3 (integer) 14 127.0.0.1:6379> set k2 2 OK 127.0.0.1:6379> incr k2 (integer) 3 127.0.0.1:6379> incr k2 (integer) 4 127.0.0.1:6379> incr k2 (integer) 5 127.0.0.1:6379> decr k2 (integer) 4 127.0.0.1:6379> decr k2 (integer) 3 127.0.0.1:6379> get k2 "3" 127.0.0.1:6379>incrby K2 3 (integer) 9 (integer) 6 127.0.0.1:6379> incrby k2 3 127.0.0.1:6379> decrby k2 3 (integer) 6 127.0.0.1:6379> decrby k2 3 (integer) 3 127.0.0.1:6379> incr k3 (error) ERR value is not an integer or out of range 127.0.0.1:6379> getrange k3 0 -1 "woshiniba12345" 127.0.0.1:6379> getrange k3 0 -2 "woshiniba1234" 127.0.0.1:6379> getrange k3 0 8 "woshiniba" 127.0.0.1:6379> setrange k3 0 xxxx (integer) 14 127.0.0.1:6379> get k3 "xxxxiniba12345" 127.0.0.1:6379> setex k4 10 v4 OK 127.0.0.1:6379> ttl k4 (integer) 4 127.0.0.1:6379> setnx k3 v11 (integer) 0 127.0.0.1:6379> get k3 "xxxxiniba12345" 127.0.0.1:6379> setnx k4 v4 (integer) 1 127.0.0.1:6379> get k4 "v4" 127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3 OK 127.0.0.1:6379> mget k1 k2 k3 1) "v1" 2) "v2" 3) "v3" 127.0.0.1:6379> msetnx k3 v3 k4 v4 (integer) 0 127.0.0.1:6379> get k4 "v4" 127.0.0.1:6379> msetnx k3 v3 k4 v4 k5 v5 (integer) 0 127.0.0.1:6379> get k5 (nil) 127.0.0.1:6379> keys * 1) "k2" 2) "k4" 3) "k1" 4) "k3" 127.0.0.1:6379> flushdb OK 127.0.0.1:6379> keys * (empty list or set) 127.0.0.1:6379> select 2 OK 127.0.0.1:6379[2]> keys * 1) "k1" 127.0.0.1:6379[2]> del k1 (integer) 1 127.0.0.1:6379[2]> select 0 OK
Redis's List
Normal operation (More Actions https://www.runoob.com/redis/redis-lists.html )
. 1 LPUSH / RPUSH / Lrange 2 lpop / RPOP . 3 the lindex # obtained in accordance with the index of the element index . 4 LLEN . 5 lrem Key # puncturing the n value . 6 LTRIM Key # Start index End index values taken after the specified range is assigned to Key . 7 rpoplpush # original list object list . 8 LSET Key index value . 9 linset Key before / After value 1 value 2
Terminal Operations
127.0.0.1:6379> keys * (empty list or set) 127.0.0.1:6379> LPUSH list01 1 2 3 4 5 (integer) 5 127.0.0.1:6379> LRANGE list01 0 -1 1) "5" 2) "4" 3) "3" 4) "2" 5) "1" 127.0.0.1:6379> RPUSH list02 1 2 3 4 5 (integer) 5 127.0.0.1:6379> LRANGE list02 0 -1 1) "1" 2) "2" 3) "3" 4) "4" 5) "5" 127.0.0.1:6379> LPOP list01 "5" 127.0.0.1:6379> LPOP list02 "1" 127.0.0.1:6379> RPOP list01 "1" 127.0.0.1:6379> RPOP list02 "5" 127.0.0.1:6379> lrange list01 0 -1 1) "4" 2) "3" 3) "2" 127.0.0.1:6379> LINDEX list01 0 "4" 127.0.0.1:6379> LINDEX list02 0 "2" 127.0.0.1:6379> LLEN list01 (integer) 3 127.0.0.1:6379> RPUSH list03 1 1 1 2 2 2 3 3 3 4 5 6 (integer) 12 127.0.0.1:6379> LREM list03 2 2 (integer) 2 127.0.0.1:6379> lrange list03 0 -1 1) "1" 2) "1" 3) "1" 4) "2" 5) "3" 6) "3" 7) "3" 8) "4" 9) "5" 10) "6" 127.0.0.1:6379> lrange list01 0 -1 1) "4" 2) "3" 3) "2" 127.0.0.1:6379> lset list01 1 x OK 127.0.0.1:6379> LRANGE list01 0 -1 1) "4" 2) "x" 3) "2" 127.0.0.1:6379> LINSERT list01 before x Python (integer) 4 127.0.0.1:6379> LRANGE list01 0 -1 1) "4" 2) "Python" 3) "x" 4) "2" 127.0.0.1:6379> LINSERT list01 after x C++ (integer) 5 127.0.0.1:6379> LRANGE list01 0 -1 1) "4" 2) "Python" 3) "x" 4) "C++" 5) "2"
summary:
left right can be inserted to add
If the key does not exist, create a new list
Ruoguo key exists, add content
Ruoguo values are all removed, the corresponding button disappeared
List operation both head and tail high efficiency, but if the intermediate element is operated, the efficiency is very bleak
Redis's Set
Normal operation ( More Actions https://www.runoob.com/redis/redis-sets.html )
. 1 Sadd / smembers / sismember 2 SCard # Get the number of elements inside the set . 3 Srem Key value # delete elements in a set . 4 srandmember Key # some integer (a few random number) . 5 SPOP Key # random popping . 6 SMOVE key1 key2 in the key1 key1 where a value is assigned a value in the key2 . 7 related to the set difference: the sdiff . 8 deposit: Sinter . 9 and: sunion
Terminal Operations
127.0.0.1:6379> sadd set01 1 1 2 2 3 3 (integer) 3 127.0.0.1:6379> SMEMBERS set01 1) "1" 2) "2" 3) "3" 127.0.0.1:6379> SISMEMBER set01 1 (integer) 1 127.0.0.1:6379> SCARD set01 (integer) 3 127.0.0.1:6379> SREM set01 1 (integer) 1 127.0.0.1:6379> SMEMBERS set01 1) "2" 2) "3" 127.0.0.1:6379> SADD set01 1 2 3 4 5 6 7 8 9 (integer) 7 127.0.0.1:6379> SRANDMEMBER set01 3 1) "9" 2) "2" 3) "1" 127.0.0.1:6379> SRANDMEMBER set01 3 1) "8" 2) "3" 3) "5" 127.0.0.1:6379> SRANDMEMBER set01 3 1) "8" 2) "7" 3) "3" 127.0.0.1:6379> SMEMBERS set01 1) "1" 2) "2" 3) "3" 4) "4" 5) "5" 6) "6" 7) "7" 8) "8" 9) "9" 127.0.0.1:6379> SPOP set01 "3" 127.0.0.1:6379> SMEMBERS set01 1) "1" 2) "2" 3) "4" 4) "5" 5) "6" 6) "7" 7) "8" 8) "9" 127.0.0.1:6379> sadd set01 x y z (integer) 3 127.0.0.1:6379> sadd set02 x y z (integer) 3 127.0.0.1:6379> SMOVE set01 set02 5 (integer) 1 127.0.0.1:6379> SMEMBERS set02 1) "y" 2) "5" 3) "x" 4) "z" 127.0.0.1:6379> del set01 (integer) 1 127.0.0.1:6379> del set02 (integer) 1 127.0.0.1:6379> keys * 1) "list01" 2) "list03" 3) "list02" 127.0.0.1:6379> sadd set01 1 2 3 4 5 (integer) 5 127.0.0.1:6379> sadd set02 1 2 3 a b (integer) 5 127.0.0.1:6379> sdiff set01 set02 1) "4" 2) "5" 127.0.0.1:6379> SINTER set01 set02 1) "1" 2) "2" 3) "3" 127.0.0.1:6379> SUNION set01 set02 1) "5" 2) "3" 3) "2" 4) "b" 5) "a" 6) "4" 7) "1"
Redis的Hash
Normal operation (More Actions https://www.runoob.com/redis/redis-hashes.html )
. 1 HSET / hget / hmset / hmget / hgetall / HDEL 2 hlen . 3 hexists key in a key inside the key value . 4 hkeys / hvals . 5 hincrby / hincrbyfloat . 6 hsetnx
Terminal Operations
127.0.0.1:6379> hset user id 11 (integer) 1 127.0.0.1:6379> hget user id "11" 127.0.0.1:6379> hset user name z3 (integer) 1 127.0.0.1:6379> hget user name "z3" 127.0.0.1:6379> hmset customer id 11 name li4 age 26 OK 127.0.0.1:6379> hmget customer id name age 1) "11" 2) "li4" 3) "26" 127.0.0.1:6379> HGETALL customer 1) "id" 2) "11" 3) "name" 4) "li4" 5) "age" 6) "26" 127.0.0.1:6379> hdel user name (integer) 1 127.0.0.1:6379> hget user id "11" 127.0.0.1:6379> hlen customer (integer) 3 127.0.0.1:6379> hexists customer id (integer) 1 127.0.0.1:6379> hkeys customer 1) "id" 2) "name" 3) "age" 127.0.0.1:6379> hvals customer 1) "11" 2) "li4" 3) "26" 127.0.0.1:6379> HINCRBY customer age 2 (integer) 28 127.0.0.1:6379> HINCRBY customer age 2 (integer) 30 127.0.0.1:6379> HINCRBY customer age 2 (integer) 32 127.0.0.1:6379> hset customer score 91.5 (integer) 1 127.0.0.1:6379> HINCRBYFLOAT customer score 4 "95.5" 127.0.0.1:6379> HSETNX customer age 26 (integer) 0 127.0.0.1:6379> HSETNX customer email [email protected] (integer) 1
Redis of Zset
Normal operation (More Actions https://www.runoob.com/redis/redis-sorted-sets.html )
1 before adding the value of a scroe in the set on the basis of k1 v1 v2 v3, now zset K1 score V1 score2 V2 2 Zadd / Z Range The . 3 zrangebyscore Key start score End score . 4 vaule value corresponding role at zrem key a score is to remove the element . 5 zcard / zcount key score interval / zrank key values action values is obtained index values / zscore Key corresponding values obtained points . 6 zrevrank Key values the value function is the reverse order to obtain the index value . 7 zrevrange . 8 zrevrangebyscore Key end score start score . 9 zrangebyscore Key start score end score withscores (does not include role limit how many steps are beginning to return restrictions limit subscript step
Terminal Operations
127.0.0.1:6379> zadd zset01 60 v1 70 v2 80 v3 90 v4 100 v5 (integer) 5 127.0.0.1:6379> zrange zset01 0 -1 1) "v1" 2) "v2" 3) "v3" 4) "v4" 5) "v5" 127.0.0.1:6379> zrange zset01 0 -1 withscores 1) "v1" 2) "60" 3) "v2" 4) "70" 5) "v3" 6) "80" 7) "v4" 8) "90" 9) "v5" 10) "100" 127.0.0.1:6379> ZRANGEBYSCORE zset01 60 90 1) "v1" 2) "v2" 3) "v3" 4) "v4" 127.0.0.1:6379> ZRANGEBYSCORE zset01 60 (90 1) "v1" 2) "v2" 3) "v3" 127.0.0.1:6379> ZRANGEBYSCORE zset01 (60 (90 1) "v2" 2) "v3" 127.0.0.1:6379> ZRANGEBYSCORE zset01 60 90 limit 2 2 1) "v3" 2) "v4" 127.0.0.1:6379> zrem zset01 v5 (integer) 1 127.0.0.1:6379> zrange zset01 0 -1 1) "v1" 2) "v2" 3) "v3" 4) "v4" 127.0.0.1:6379> ZRANGE zset01 0 -1 withscores 1) "v1" 2) "60" 3) "v2" 4) "70" 5) "v3" 6) "80" 7) "v4" 8) "90" 127.0.0.1:6379> zcard zset01 (integer) 4 127.0.0.1:6379> ZCOUNT zset01 60 80 (integer) 3 127.0.0.1:6379>Zset01 v4 ZRANK "90" 127.0.0.1:6379> ZSCORE zset01 v4 (integer) 3 127.0.0.1:6379> ZREVRANK zset01 v4 (integer) 0 127.0.0.1:6379> ZREVRANGE zset01 0 -1 1) "v4" 2) "v3" 3) "v2" 4) "v1" 127.0.0.1:6379> ZREVRANGEBYSCORE zset01 90 60 withscores limit 2 2 1) "v2" 2) "70" 3) "v1" 4) "60" 127.0.0.1:6379> ZREVRANGEBYSCORE zset01 90 60 withscores limit 0 2 1) "v4" 2) "90" 3) "v3" 4) "80" 127.0.0.1:6379>