中间件专栏之redis篇——redis基本原理、概念及其相关命令介绍
一、redis是什么
redis是remote dictionary service的简称,中文翻译为远程字典服务;
redis是一种数据库,若按照类型来归类,则其可以被归入三个类型数据库,分别为:内存数据库、KV数据库、数据结构数据库;内存数据库表示redis的数据是存储在内存中(相较于存储在磁盘中速度大约快10w倍),KV数据库表示redis存储数据的方式为“key-value”的hash表结构,每个key对应一个value;数据结构数据库表示redis存储的数据类型(即value的类型)有多种,包括string、list、hash、set、zset等。
redis的应用非常广泛,很多大型公司如twitter、GitHub、腾讯、阿里巴巴、京东、华为以及众多中小型公司都在使用。
二、redis的应用
在业务开发中,redis中的不同数据结构可以为不同的业务逻辑场景来赋能,比如:
使用hash数据结构(适用于对象有多个属性)记录朋友圈点赞数、评论数和点击数;
使用list数据结构(适用于插入有序的场景)快速显示朋友圈;
记录文章的标题、摘要、作者、封面,用于页面展示,也是用hash,因为也是有多个属性的场景;
通过set数据结构的交并差集来实现记录好友关系(set是集合,所以可以对其进行数学上的集合运算);
……
三、redis的数据结构
如图所示,redis是通过key来索引对应的value,而value有多种数据类型供选择,图中是常见的五种。
string是一个安全的二进制字符串;
双端队列(链表)list是插入有序的;
散列表hash对顺序不关注,但是其field是唯一的;
无序结合set对顺序不关注,里面的值都是唯一的;
有序集合zset对顺序是关注的,里面的值是唯一的,根据member唯一性实现去重,根据score来确定有序。
四、redis的相关命令
string数据类型相关命令:
SET key value
GET key
INCR key
DECR key
APPEND key value
MSET key1 value1 key2 value2
MGET key1 key2
SETEX key seconds value
GETSET key value
list数据类型相关命令:
LPUSH key value
RPUSH key value
LPOP key
RPOP key
LRANGE key start stop
LLEN key
LREM key count value
LSET key index value
hash数据类型相关命令:
HSET key field value
HGET key field
HGETALL key
HDEL key field
HINCRBY key field increment
HKEYS key
HVALS key
HEXISTS key field
set数据类型相关命令:
SADD key member1 member2
SREM key member
SMEMBERS key
SISMEMBER key member
SCARD key
SPOP key
SDIFF key1 key2
SUNION key1 key2
zset数据类型相关命令:
ZADD key score member
ZRANGE key start stop
ZREVRANGE key start stop
ZREM key member
ZINCRBY key increment member
ZCARD key
ZSCORE key member
ZRANK key member
ZREVRANK key member
ZRANGEBYSCORE key min max
总结:
- String:
SET
,GET
,INCR
,DECR
,MSET
,MGET
等 - List:
LPUSH
,RPUSH
,LPOP
,RPOP
,LRANGE
,LLEN
等 - Set:
SADD
,SREM
,SMEMBERS
,SISMEMBER
,SCARD
,SPOP
等 - Hash:
HSET
,HGET
,HGETALL
,HDEL
,HINCRBY
,HKEYS
等 - ZSet:
ZADD
,ZRANGE
,ZREVRANGE
,ZREM
,ZINCRBY
,ZRANK
等
每个指令的具体解释本文不作详细介绍,读者可以自行查阅相关资料。