redis
五大数据类型
一、String
redis-server.exe redis.windows.conf
select 0-15 选择数据库
dbsize 查看数据库大小
set name chenmimi
get name
keys * 查看所有的键值对
flushdb
flushall
EXPIRE name 10 设置过期时间
ttl name 查看剩余时间
append key1 "hello" 追加字符串
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379> keys *
1) "k1"
127.0.0.1:6379> EXISTS k1
( integer) 1
127.0.0.1:6379> APPEND k1 "-first"
( integer) 8
127.0.0.1:6379> keys *
1) "k1"
127.0.0.1:6379> get k1
"v1-first"
127.0.0.1:6379>
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> keys *
( empty list or set)
127.0.0.1:6379> set views 0
OK
127.0.0.1:6379> incr views
( integer) 1
127.0.0.1:6379> incr views
( integer) 2
127.0.0.1:6379> get views
"2"
127.0.0.1:6379> decr views
( integer) 1
127.0.0.1:6379> INCRBY views 10
( integer) 11
127.0.0.1:6379> INCRBY views 10
( integer) 21
127.0.0.1:6379> DECRBY views 10
( integer) 11
127.0.0.1:6379>
127.0.0.1:6379> set key1 "hello redis"
OK
127.0.0.1:6379> get key1
"hello redis"
127.0.0.1:6379> GETRANGE key1 0 3
"hell"
127.0.0.1:6379> set k2 "abcdefg"
OK
127.0.0.1:6379> get k2
"abcdefg"
127.0.0.1:6379> SETRANGE k2 2 xxx
( integer) 7
127.0.0.1:6379> get k2
"abxxxfg"
setex ( set with expire)
setnx( set if not exist)
127.0.0.1:6379> setex k3 30 "reids"
OK
127.0.0.1:6379> ttl k3
( integer) 21
127.0.0.1:6379> get k3
"reids"
127.0.0.1:6379> setnx mykey "redis"
( integer) 1
127.0.0.1:6379> keys *
1) "k2"
2) "key1"
3) "mykey"
127.0.0.1:6379> setnx mykey "mongodb"
( integer) 0
127.0.0.1:6379>
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3
OK
127.0.0.1:6379> keys *
1) "k2"
2) "k1"
3) "k3"
127.0.0.1:6379> mget k1 k2 k3
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379> msetnx k1 v1 k4 v1
( integer) 0
127.0.0.1:6379> get k4
( nil)
127.0.0.1:6379>
127.0.0.1:6379> mset user:1:name zhangsan user:1:age 18
OK
127.0.0.1:6379> mget user:1:name user:1:age
1) "zhangsan"
2) "18"
127.0.0.1:6379>
127.0.0.1:6379> getset db redis
( nil)
127.0.0.1:6379> get db
"redis"
127.0.0.1:6379> getset db mongdb
"redis"
127.0.0.1:6379> get db
"mongdb"
二、list(链表)
127.0.0.1:6379> lpush list one
( integer) 1
127.0.0.1:6379> LPUSH list two
( integer) 2
127.0.0.1:6379> LPUSH list three
( integer) 3
127.0.0.1:6379> LRANGE list 0 -1
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> LRANGE list 0 1
1) "three"
2) "two"
127.0.0.1:6379> RPUSH list right
( integer) 4
127.0.0.1:6379> LRANGE list 0 -1
1) "three"
2) "two"
3) "one"
4) "right"
127.0.0.1:6379> LPOP list
"three"
127.0.0.1:6379> RPOP list
"right"
127.0.0.1:6379> LRANGE list 0 -1
1) "two"
2) "one"
127.0.0.1:6379> LINDEX list 0
"two"
127.0.0.1:6379> LLEN list
( integer) 3
127.0.0.1:6379> RPUSH list three
( integer) 4
127.0.0.1:6379> LREM list 1 one
( integer) 1
127.0.0.1:6379> LRANGE list 0 -1
1) "thrree"
2) "two"
3) "three"
127.0.0.1:6379> lrem list 1 three
( integer) 1
127.0.0.1:6379> lpush list two
( integer) 3
127.0.0.1:6379> LRANGE list 0 -1
1) "two"
2) "thrree"
3) "two"
127.0.0.1:6379> LREM list 2 two
( integer) 2
127.0.0.1:6379> LRANGE list 0 -1
1) "thrree"
127.0.0.1:6379> RPUSH list "hello"
( integer) 1
127.0.0.1:6379> RPUSH list "redis"
( integer) 2
127.0.0.1:6379> RPUSH list "java"
( integer) 3
127.0.0.1:6379> RPUSH list "Spring"
( integer) 4
127.0.0.1:6379> LRANGE list 0 -1
1) "hello"
2) "redis"
3) "java"
4) "Spring"
127.0.0.1:6379> LTRIM list 1 2
OK
127.0.0.1:6379> LRANGE list 0 -1
1) "redis"
2) "java"
127.0.0.1:6379> LRANGE list 0 -1
1) "redis"
2) "java"
3) "Spring"
4) "mysql"
127.0.0.1:6379> rpoplpush list otherlist
"mysql"
127.0.0.1:6379> LRANGE list 0 -1
1) "redis"
2) "java"
3) "Spring"
127.0.0.1:6379> LRANGE otherlist 0 -1
1) "mysql"
127.0.0.1:6379> lset otherlist 0 "SpringBoot"
OK
127.0.0.1:6379> LRANGE otherlist 0 0
1) "SpringBoot"
127.0.0.1:6379> LINSERT otherlist before "SpringBoot" "SpringMVC"
( integer) 2
127.0.0.1:6379> LRANGE otherlist 0 -1
1) "SpringMVC"
2) "SpringBoot"
127.0.0.1:6379> LINSERT otherlist after "SpringBoot" "SpringCloud"
( integer) 3
127.0.0.1:6379> LRANGE otherlist 0 -1
1) "SpringMVC"
2) "SpringBoot"
3) "SpringCloud"
127.0.0.1:6379>
三、set(值不可以重复)
27.0.0.1:6379> sadd set "redis"
( integer) 1
127.0.0.1:6379> sadd set "java"
( integer) 1
127.0.0.1:6379> sadd set "Spring"
( integer) 1
127.0.0.1:6379> SMEMBERS set
1) "Spring"
2) "java"
3) "redis"
127.0.0.1:6379> SISMEMBER set "reids"
( integer) 0
127.0.0.1:6379> sismember set "redis"
127.0.0.1:6379> scard set
( integer) 3
127.0.0.1:6379> sadd set "mysql"
( integer) 1
127.0.0.1:6379> scard set
( integer) 4
127.0.0.1:6379> sadd set "mysql"
( integer) 0
127.0.0.1:6379> srem set "mysql"
( integer) 1
127.0.0.1:6379> scard set
( integer) 3
127.0.0.1:6379> smembers set
1) "java"
2) "redis"
3) "Spring"
127.0.0.1:6379> SRANDMEMBER set
"Spring"
127.0.0.1:6379> SRANDMEMBER set
"java"
127.0.0.1:6379> SRANDMEMBER set
"java"
127.0.0.1:6379> spop set
"Spring"
127.0.0.1:6379> spop set
"java"
127.0.0.1:6379> scard set
( integer) 1
127.0.0.1:6379> SMEMBERS set
1) "redis"
127.0.0.1:6379> SMOVE set1 set2 "redis"
( integer) 1
127.0.0.1:6379> smembers set1
1) "java"
2) "spring"
127.0.0.1:6379> smembers set2
1) "mysql"
2) "redis"
127.0.0.1:6379>
127.0.0.1:6379> sadd key1 a
( integer) 1
127.0.0.1:6379> sadd key2 b
( integer) 1
127.0.0.1:6379> sadd key1 b
( integer) 1
127.0.0.1:6379> sadd key1 c
( integer) 1
127.0.0.1:6379> sadd key2 d
( integer) 1
127.0.0.1:6379> sdiff key1 key2
1) "a"
2) "c"
127.0.0.1:6379> sinter key1 key2
1) "b"
127.0.0.1:6379> sunion key1 key2
1) "d"
2) "a"
3) "b"
4) "c"
四、hash(key-map)
127.0.0.1:6379> hset hash filed1 milearn
( integer) 1
127.0.0.1:6379> hget hash filed1
"milearn"
127.0.0.1:6379> hmset hash filed2 hello filed2 world
OK
127.0.0.1:6379> hmget hash filed1 filed2
1) "milearn"
2) "world"
127.0.0.1:6379> hgetall hash
1) "filed1"
2) "milearn"
3) "filed2"
4) "world"
127.0.0.1:6379> hdel hash filed1
( integer) 1
127.0.0.1:6379> hgetall hash
1) "filed2"
2) "world"
127.0.0.1:6379> hmset hash filed1 value1 filed3 value3
OK
127.0.0.1:6379> hgetall hash
1) "filed2"
2) "world"
3) "filed1"
4) "value1"
5) "filed3"
6) "value3"
127.0.0.1:6379> hlen hash
( integer) 3
127.0.0.1:6379> EXISTS hash filed1
( integer) 1
127.0.0.1:6379> hkeys hash
1) "filed2"
2) "filed1"
3) "filed3"
127.0.0.1:6379> hvals hash
1) "world"
2) "value1"
3) "value3"
127.0.0.1:6379> hset hash filed1 5
( integer) 1
127.0.0.1:6379> HINCRBY hash filed1 1
( integer) 6
127.0.0.1:6379> hsetnx hash filed4 hello
( integer) 1
127.0.0.1:6379> hsetnx hash filed4 world
( integer) 0
127.0.0.1:6379>
127.0.0.1:6379> hset user:1 name milearn
( integer) 1
127.0.0.1:6379> hget user:1 name
"milearn"
127.0.0.1:6379>
五、Zset(有序集合)
127.0.0.1:6379> zadd myset 1 one
( integer) 1
127.0.0.1:6379> zadd myset 2 two
( integer) 1
127.0.0.1:6379> zadd myset 3 three 4 four
( integer) 2
127.0.0.1:6379> ZRANGE myset 0 -1
1) "one"
2) "two"
3) "three"
4) "four"
127.0.0.1:6379> ZRANGEBYscore salary -inf +inf
1) "xiaohong"
2) "zhangsan"
3) "milearn"
127.0.0.1:6379> ZRANGEBYscore salary -inf +inf withscores
1) "xiaohong"
2) "2500"
3) "zhangsan"
4) "5000"
5) "milearn"
6) "9999"
127.0.0.1:6379> zrem salary xiaohong
( integer) 1
127.0.0.1:6379> ZRANGE salary 0 -1
1) "zhangsan"
2) "milearn"
127.0.0.1:6379>
127.0.0.1:6379> zcard salary
( integer) 2
127.0.0.1:6379> zadd myset 1 hello
( integer) 1
127.0.0.1:6379> zadd myset 2 world 3 redis
( integer) 2
127.0.0.1:6379> zcount myset 1 3
( integer) 3
127.0.0.1:6379> zcount myset 1 2
( integer) 2
127.0.0.1:6379>
三大特殊数据
一、geospatial
127.0.0.1:6379> geoadd china:city 116.40 39.90 beijing
( integer) 1
127.0.0.1:6379> geoadd china:city 121.47 31.23 shanghai
( integer) 1
127.0.0.1:6379> geoadd china:city 106.50 29.53 chongqing 114.05 22.52 shengzhen
( integer) 2
127.0.0.1:6379> geoadd china:city 120.16 30.24 hangzhou 108.96 34.26 xian
( integer) 2
127.0.0.1:6379> geopos china:city beijing
1) 1) "116.39999896287918"
2) "39.900000091670925"
127.0.0.1:6379> geopos china:city chongqing
1) 1) "106.49999767541885"
2) "29.529999579006592"
127.0.0.1:6379> geodist china:city beijing shanghai
"1067378.7564"
127.0.0.1:6379> geodist china:city beijing shanghai km
"1067.3788"
127.0.0.1:6379> geodist china:city beijing chongqing km
"1464.0708"
127.0.0.1:6379> georadius china:city 110 30 1000 km
1) "chongqing"
2) "xian"
3) "shengzhen"
4) "hangzhou"
127.0.0.1:6379> GEORADIUSBYMEMBER china:city shanghai 400 km
1) "hangzhou"
2) "shanghai"
127.0.0.1:6379> ZRANGE china:city 0 -1
1) "chongqing"
2) "xian"
3) "shengzhen"
4) "hangzhou"
5) "shanghai"
6) "beijing"
二、Hyperloglog(允许容错)
127.0.0.1:6379> PFADD mykey a b c d e f g h i
( integer) 1
127.0.0.1:6379> PFCOUNT mykey
( integer) 9
127.0.0.1:6379> pfadd mykey2 a b c d e f g h i h k i u p
( integer) 1
127.0.0.1:6379> PFCOUNT mykey2
( integer) 12
127.0.0.1:6379> PFMERGE mykey3 mykey mykey2
OK
127.0.0.1:6379> PFCOUNT mykey3
( integer) 12
三、Bitmaps
127.0.0.1:6379> setbit sign 0 1
( integer) 0
127.0.0.1:6379> setbit sign 2 0
( integer) 0
127.0.0.1:6379> setbit sign 1 0
( integer) 0
127.0.0.1:6379> setbit sign 4 1
( integer) 0
127.0.0.1:6379> setbit sign 5 0
( integer) 0
127.0.0.1:6379> setbit sign 6 0
( integer) 0
127.0.0.1:6379> getbit sign 4
( integer) 1
127.0.0.1:6379> BITCOUNT sign
( integer) 2