Redis使用入门
文章目录
本博客采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本博客文章必须也遵循署名-非商业用途-保持一致的创作共用协议.
Redis Introduction
Redis
是一个用C语言实现的key-value store. 除了最基础的基于字符串的键值对,Redis可以是更加复杂的数据结构,所以redis也常被称为是一个data structure server(数据结构服务器)
Redis支持的数据结构列表:
- String(字符串)
- List(列表, 基本的
链表
) - Set(元素唯一的, 无序的集合)
- Sorted Set(类似于Set, 但是每个字符串元素关联一个浮点数score, 用于排序)
- Hash(哈希)
- Bitmap
- HyperLogLogs
本篇没有涵盖Bitmap和HyperLogLogs的使用
Redis Install
在Redis下载页面下载需要版本的redis
|
|
运行Redis的服务器端
|
|
运行Redis的交互式客户端
用过python应该都理解交互式的意义吧
|
|
在.zshrc设置快捷启动
|
|
Redis keys
Redis keys是二进制安全的, 可以使用任何二进制序列作为key, 空的字符串也是有效地key
Redis Strings
使用字符串作为value时, 我们在string key和string value之间建立了映射关系
- value不能大小不能操作
512MB
SET
命令设置键值对, 重复设置key的value, 会覆盖原来的valueGET
命令通过key检索valueINRC
命令将给定key的value看做整型, 实现加一
操作, 这个命令是原子性的
(原子性中是事务ACID特性之一)GETSET
命令通过新的value设置key, 并返回旧的valueMSET
和MGET
命令分别用于同时设置或检索多个keyEXISTS
命令, 如果给定的key存在返回1, 否则返回0DEL
命令删除key-value对
|
|
Redis 定时器
EXPIRE
命令提供定时器功能, 设置key只能存在固定时间, 时间到key会被删除(以秒为单位
)TTL
用于查询key还有多长时间被删除.
TTL返回-2
表示key已经被删除, TTL返回-1
表示key不会expire
|
|
Redis Lists
Redis通过链表来实现List
链表的实现优点是快速的插入和删除, 缺点是检索相对数组实现List慢
LPUSH
命令从List的头部插入一个或多个value, 返回插入后的list长度RPUSH
命令从List的尾部插入一个或多个value, 返回插入后的list长度LLEN
命令返回List的长度LRANGE
命令从List取出固定一段子List
(类似于python中的切片操作), 有两个索引参数, 都可以为负数LPOP
命令从尾部删除valueRPOP
命令从头部删除value, 没有value可删时返回nil
|
|
Redis Sets
value为Set, 表示无需的字符串集合
SADD
命令向set中增加元素, 如果元素已存在则返回0, 否则返回1SMEMERS
命令返回set集合, 返回的集合与插入时的顺序无关SISMEMBER
命令测试元素是否在set中, 在返回1, 不在返回0SREM
移除set中的元素SUNION
命令链接多个set集合
|
|
Redis Sorted Sets
Sorted Set类似于Set和Hash的混合, Sorted Set中的元素也是唯一不重复的字符窜元素,
Set中的元素无需, Sorted Set中通过浮点数score排序
, Sorted Set通过跳表
和哈希表
实现, 增加一个元素的复杂度O(log(N))
排序原则:
- score不同时, A.score > B.score => A > B
- score相同时, A.score = B.score => A和B通过比较字符串的
字典序
进行排序 ZADD
命令增加带score的元素, 可以传入多个score-value对ZRANGE
命令类似于LRANGE
操作,ZREVRANGE
命令反序输出Sorted set元素片段
|
|
Redis Hashes
HSET
命令设置key中field和field应对的valueHMSET
命令用于设置哈希中的多个fieldHGET
命令用于检索单个fieldHMGET
命令用于检索多个filedHGETALL
命令获得key的所有的field和field对应的value
|
|