A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 尹亮 于 2018-11-3 14:04 编辑

Redis相较于其它的数据库虽然简单,但是要熟记所有命令的用法也并非易事。一个简单的技巧是通过要操作的数据类型来将这些命令进行结构化。
数据类型和对应命令所有存储于redis中的数据都对应于一个键值对(key-value pair), key可以是任意二进制序列,通常我们使用字符串来标记一个特定的key。在redis中我们通常称这个key为name或者就叫key, 而对于value,redis支持如下几种类型:
  • strings
  • lists: list内容只能是string
  • sets: set中存储非重复的string
  • sorted sets: 与sets类似,但是每个string都会对应一个float类型的score,从而用于排序
  • hashes: 键值对hash类型,也就是Python中的dict,注意在redis中最外层的key一般叫做name或者key,而value中数据类型如果是dict,那么这个dict中的key通常被称为field。
  • Bit arrays (or simply bitmaps): 实际存储的仍然是string,但是可以针对bit进行操作
  • HyperLogLogs: 用于估计unique value的数量

strings
[AppleScript] 纯文本查看 复制代码
127.0.0.1:6379> set strtest xyz
OK
127.0.0.1:6379> get strtest
"xyz"
127.0.0.1:6379> mset a 1 b 2 c 3
OK
127.0.0.1:6379> mget a b c
1) "1"
2) "2"
3) "3"
# 注意以下增减操作只能针对整数数字(虽然类型仍然是string类型)
127.0.0.1:6379> incr a
(integer) 2
127.0.0.1:6379> incrby b 5
(integer) 7
127.0.0.1:6379> decr b
(integer) 6
127.0.0.1:6379> decrby b 3
(integer) 3

lists
[AppleScript] 纯文本查看 复制代码
# left push用于从左将item压入到list当中
127.0.0.1:6379> lpush list_test 1 2 3
(integer) 3

# 注意如果想看list中的内容,无法通过get直接去看,get只是针对string,而必须使用lrange
127.0.0.1:6379> get list_test 
(error) WRONGTYPE Operation against a key holding the wrong kind of value

# 这里0 -1均为list index,表示从index 0 开始到-1结束,-1即从右数最后一个item
127.0.0.1:6379> lrange list_test 0 -1
1) "3"
2) "2"
3) "1"

127.0.0.1:6379> rpush list_test 5 7
(integer) 5
127.0.0.1:6379> lrange list_test 0 -1
1) "3"
2) "2"
3) "1"
4) "5"
5) "7"
127.0.0.1:6379> lpop list_test
"3"
127.0.0.1:6379> lrange list_test 0 -1
1) "2"
2) "1"
3) "5"
4) "7"

# 从左trim截断list,以下是截取index 0 到index 2 的item作为新的list
127.0.0.1:6379> ltrim list_test 0 2
OK
127.0.0.1:6379> lrange list_test 0 -1
1) "2"
2) "1"
3) "5"


hashes (dict)
[AppleScript] 纯文本查看 复制代码
127.0.0.1:6379> hset htest a 1
(integer) 1
127.0.0.1:6379> hget htest a
"1"
127.0.0.1:6379> hmset htest a 1 b 2 c 3
OK
127.0.0.1:6379> hmget htest a b c
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> hgetall htest
1) "a"
2) "1"
3) "b"
4) "2"
5) "c"
6) "3"
127.0.0.1:6379> hkeys htest
1) "a"
2) "b"
3) "c"
127.0.0.1:6379> hvals htest
1) "1"
2) "2"
3) "3"


sets
[AppleScript] 纯文本查看 复制代码
127.0.0.1:6379> sadd set_test a b 33
(integer) 3
127.0.0.1:6379> sadd set_test c a b 22
(integer) 1

# 可以看到不会有重复的item
127.0.0.1:6379> smembers set_test
1) "c"
2) "33"
3) "a"
4) "b"

# 用于测试set中是否包含指定的item,如有则返回1,没有返回0
127.0.0.1:6379> sismember set_test a
(integer) 1
127.0.0.1:6379> sismember set_test xx
(integer) 0

127.0.0.1:6379> sadd set_test2 a b 56 66
(integer) 4
127.0.0.1:6379> smembers set_test2
1) "56"
2) "a"
3) "66"
4) "b"

# 求交集
127.0.0.1:6379> sinter set_test set_test2
1) "a"
2) "b"

# 求并集
127.0.0.1:6379> sunion set_test set_test2
1) "33"
2) "a"
3) "56"
4) "c"
5) "66"
6) "22"
7) "b"


通用的命令
  • keys pattern: pattern可以为glob风格的通配符格式,最常用的是keys *查询所有的keys
  • exists key: 查询该key是否存在
  • del key: 删除该key对应的数据
  • type key: 查询该key对应的value的数据类型
  • expire key: 定义多长时间后key对应的数据过期,过期后数据会被自动删除
  • ttl key: 查询该key对应的剩余存活时间
  • flushdb/flushall: flushdb用于清除当前db的所有数据,flushall清除所有数据库的数据



3 个回复

倒序浏览
ヾ(◍°∇°◍)ノ゙
回复 使用道具 举报
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马