Redis基本知识
Redis介绍
Redis:REmote DIctionary Server,远程字典服务器。是完全开源免费,用C语言编写的一个高性能Key-Value分布式内存数据库.其基于内存运行,支持持久化,是最热门的NoSQL数据库之一。
Redis具有消息中间件、发布订阅消息系统、定时器、计数器等功能。
Redis优势
- 基于内存运行,数据读写速度快
- 支持丰富的数据类型,Sting、List、Set、Hash、Sorted Set
- 支持事务,操作都是原子性
- 支持数据持久化,将内存的数据保存在磁盘,可以再次加载使用
- 支持数据的备份,采用Master-Slave模式数据备份
Redis五大数据类型
String
String是最基本的类型,一个key对应一个value。String类型可以包含任何数据,比如jpg图片或序列化对象。String类型的值最大能存储512MB。
SET name "csw"
GET name
//输出"csw"
常用的指令:
- SET key value,设置指定key的值
- GET key,获取指定key的值
- MSET,同时设置一个或多个key-value对
Hash
Hash是一个String类型的field和value的映射表,适合用于存储对象
HMSET myhash name "csw" age "24"
HGET myhash name
//输出"csw"
HGET myhash age
//输出"24"
常用的命令:
- HGET key field,获取在哈希表中指定key的所有字段和值
- HEXISTS key field,查看哈希表key中,指定的field是否存在
- HDEL key field,删除key中,指定的字段
- HEKYS key,获取所有key值
List
List是简单的字符串列表,按照插入顺序排序,可以在列表头部和尾部添加元素,底层是一个链表。
LPUSH mylist a1
LPUSH mylist a2
LPUSH mylist a3
LRANGE mylist 1 2
//输出"a1" "a2"
常用的命令:
- BLPOP key,移出并获取列表的第一个元素
- BRPOP key,移出并获取列表的最后一个元素
- LPUSH key value,将第一个或多个值插入列表头部
- RPUSH key value,将第一个或多个值插入列表尾部
Set
Set是String类型的无序集合,通过HashTable实现。添加、删除、查找的复杂度都是O(1)。
SADD city beijing
SADD city fuzhou
SADD city putian
SMEMBERS city
//输出"beijing" "fuzhou" "putian"
常用的命令:
- SADD key member1,想集合添加一个或多个成员
- SCARD key,获取集合的成员数
- SMEMBERS key,返回集合中的所有成员
Sorted Set
有序集合Zset与Set一样是String类型的集合,不同的是每个元素会关联一个double类型的分数score,通过分数进行从小到大的排序,其中分数score可重复。
ZADD price 3 pen
ZADD price 5 apple
ZADD price 50 dinner
ZRANGEBYSCORE price 4 51
//输出"apple" "dinner"
常用的命令:
- ZDD key score member1,向有序集合添加一个成员
- ZCARD key,获取有序集合的成员数