一、概述
redis数据结构一般包括七种,即String、List、Set、Sorted set、Hash、GEO、Stream。
要查看reids数据结构,可以通过命令:type key 来查询。
127.0.0.1:6379> type name
string
下面对这几种数据结构进行介绍。
二、介绍
1、String:简单的键值对结构<String, String>,value也可以是数字。
一般可以直接使用get、set方法来进行操作:
127.0.0.1:6379> set name hello
OK
127.0.0.1:6379> get name
"hello"
127.0.0.1:6379> type name
string
使用场景:网站点击数、微博阅读数等
2、List:链表,类似于java的List
127.0.0.1:6379> Lpush list1 a b c d
(integer) 4
127.0.0.1:6379> type list1
list
127.0.0.1:6379> Lrange list1 0 1
1) "d"
2) "c"
127.0.0.1:6379>
使用场景:好友列表、关注列表等
3、Set:一个集合,一堆不重复值的组合
127.0.0.1:6379> Sadd set1 1 2 3 3
(integer) 3
127.0.0.1:6379> Smembers set1
1) "1"
2) "2"
3) "3"
使用场景:去重相关的场景
4、Sorted set:类似Set,但是是自动有序的,通过用户提供一个优先级(score)参数作为成员排序。
127.0.0.1:6379> Zadd sortedset1 1 a 2 b
(integer) 2
127.0.0.1:6379> Zrange sortedset1 0 1
1) "a"
2) "b"
使用场景:排行榜、用户投票
5、Hash:是一个string类型的field和value的映射表
127.0.0.1:6379> Hset hash1 key 123
(integer) 1
127.0.0.1:6379> Hset hash1 key2 234
(integer) 1
127.0.0.1:6379> Hgetall hash1
1) "key"
2) "123"
3) "key2"
4) "234"
127.0.0.1:6379> Hget hash1 key
"123"
使用场景:缓存登录账户、缓存码表等
备注:通过例子可以看出,Hash和String还是不一样的。
6、GEO:3.2版本开始对GEO(地理位置)的支持
127.0.0.1:6379> GEOADD geo1 26.215423 36.542134 "address1" 26.335487 36.145278 "address2"
(integer) 2
127.0.0.1:6379> GEODIST geo1 "address1" "address2"
"45432.4893"
使用场景:LBS(Location Based Service)基于位置的服务
7、Stream:5.0版本开始的流,类似MQ,提供分组、订阅功能。
127.0.0.1:6379> XADD stream1 1 key1 aaa
"1-0"
127.0.0.1:6379> XREAD COUNT 1 STREAMS stream1 0-0
1) 1) "stream1"
2) 1) 1) "1-0"
2) 1) "key1"
2) "aaa"
使用场景:生产者消费者场景,类似MQ
备注:XREAD方法并不会自动删除消息,只会读取消息,删除需要执行XDEL命令。
三、redis使用备注:
1、生产环境下不要使用key *命令,因为这会遍历所有值,导致服务卡死。
2、memcache的性能要高于redis。
3、redis官网:https://redis.io
4、不要暴露给互联网,因为有安全漏洞。