Redis的入门及使用:
一、什么是Redis?
REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库,Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。
Redis 官网:
https://redis.io/
Redis源码地址:
https://github.com/redis/redis
特点:
- 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s
- 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作
- 原子性:所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来即可
- 丰富的特性,支持 publish/subscribe, 通知, key 过期等等特性
- 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
- 支持数据的备份,即master-slave模式的数据备份
二、Redis的安装
下载地址:
https://github.com/tporadowski/redis/releases
找到自己电脑系统的版本(这里以Windows为例):
下载完毕解压即可
包内可得到以下文件:
Redis 的配置文件位于 Redis 安装目录下,文件名为redis.windows.conf,也就是上图第五个文件。
启动:
首先双击start.bat文件,可以打开以下界面:
任何不要关闭此窗口,重新打开一个cmd窗口,输入指令:
redis-cli.exe -h 127.0.0.1 -p 6379
若无报错,即启动成功!
三、Redis的数据类型
Redis支持五种数据类型:
- string(字符串)
- hash(哈希)
- list(列表)
- set(集合)
- zset(sorted set:有序集合)
String:
字符串类型没什么好说的,就是大家理解的字符串,比如name:‘‘张三’’
String 类型是二进制且安全的,意思是 Redis 的 String 可以包含任何数据。比如jpg图片或者序列化的对象,String 类型是 Redis 最基本的数据类型,String 类型的值最大能存储 512MB
Hash:
Redis hash 是一个键值(key=>value)对集合,也是一个 String 类型的 field 和 value 的映射表,Hash 特别适合用于存储对象,比如:
输入指令:
HMSET runoob name "zhangsan" age "15"
取值:
HGET runoob name
/
HGET runoob age
上面使用了 Redis HMSET, HGET 命令,HMSET 设置了两个 field=>value 对, HGET 获取对应 field 对应的 value。每个 hash 可以存储 232 -1 键值对(大概40多亿)
List:
列表也是大家理解的列表,按照插入顺序排序。你可以添加一个元素到列表的头部或者尾部:
列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)
Set:
Redis 的 Set 是 String 类型的无序集合,集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)
添加一个 String 元素到 key 对应的 set 集合中,成功返回 1,如果元素已经在集合中返回 0:
集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)
zset(有序集合):
zset 和 set 一样也是string类型元素的集合,且不允许重复的成员,不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序,zset的成员是唯一的,但分数(score)却可以重复:
四、Redis命令
Redis 命令用于在 redis 服务上执行操作
Redis 客户端的基本语法为:
redis-cli
启动 redis 服务器,打开终端并输入命令 redis-cli,该命令会连接本地的 redis 服务:
执行 PING 命令,该命令用于检测 redis 服务是否启动
远程 redis 服务上执行命令,也是使用 redis-cli 命令:
redis-cli -h host -p port -a password
在p后输入端口号,pwd处替换为密码即可,比如:
redis-cli -h 127.0.0.1 -p 6379 -a "123456"
Redis 键(key)命令:
Redis 键命令的基本语法:
COMMAND KEY_NAME
在以上实例中 DEL 是一个命令, person 是一个键。 如果键被删除成功,命令执行后输出 (integer) 1,否则将输出 (integer) 0
其他键指令:
序列化给定 key ,并返回被序列化的值:
DUMP key
检查给定 key 是否存在:
EXISTS key
设置 key 的过期时间以秒计:
EXPIRE key seconds
设置 key 的过期时间以毫秒计:
PEXPIRE key milliseconds
设置 key 过期时间的时间戳以毫秒计:
PEXPIREAT key milliseconds-timestamp
移除 key 的过期时间,key 将持久保持:
PERSIST key
以毫秒为单位返回 key 的剩余的过期时间:
PTTL key
从当前数据库中随机返回一个 key :
RANDOMKEY
修改 key 的名称:
RENAME key newkey
返回 key 所储存的值的类型:
YPE key
其他更全面的指令大家可以自行查阅
Redis 字符串(String)指令:
Redis 字符串数据类型的相关命令用于管理 redis 字符串值,基本语法:
COMMAND KEY_NAME
在上述图中使用了 SET 和 GET 命令,键为 person
其他主要的String指令:
返回 key 中字符串值的子字符:
GETRANGE key start end
将给定 key 的值设为 value ,并返回 key 的旧值:
GETSET key value
只在 key 不存在时设置 key 的值:
SETNX key value
返回 key 所储存的字符串值的长度:
STRLEN key
同时设置一个或多个 key-value 对:
MSET key value [key value ...]
其他更全面的指令大家可以自行查阅
Redis 哈希(Hash)指令:
Hash 特别适合用于存储对象:
设置一个对象person,有名字、年龄、性别、爱好信息
其他主要的Hash指令:
删除一个或多个哈希表字段:
HDEL key field1 [field2]
查看哈希表 key 中指定的字段是否存在:
HEXISTS key field
获取存储在哈希表中指定字段的值:
HGET key field
获取在哈希表中指定 key 的所有字段和值:
HGETALL key
获取所有哈希表中的字段:
HKEYS key
获取哈希表中字段的数量:
HLEN key
获取哈希表中所有值:
HVALS key
将哈希表 key 中的字段 field 的值设为 value:
HSET key field value
其他更全面的指令大家可以自行查阅
Redis 列表(List)指令:
通过索引获取列表中的元素:
LINDEX key index
在列表的元素前或者后插入元素:
LINSERT key BEFORE|AFTER pivot value
获取列表长度:
LLEN key
移出并获取列表的第一个元素:
LPOP key
将一个或多个值插入到列表头部:
LPUSHX key value
获取列表指定范围内的元素:
LRANGE key start stop
移除列表元素:
LREM key count value
通过索引设置列表元素的值:
LSET key index value
移除列表的最后一个元素,返回值为移除的元素:
RPOP key
在列表中添加一个或多个值:
RPUSH key value1 [value2]
为已存在的列表添加值:
RPUSHX key value
其他更全面的指令大家可以自行查阅
Redis 集合(Set)指令:
Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据:
图中通过 sadd 命令向名为 phone 的集合插入的三个元素,若重复数据则返回0
其他主要的Set指令:
向集合添加一个或多个成员:
SADD key member1 [member2]
获取集合的成员数:
SCARD key
返回第一个集合与其他集合之间的差异:
SDIFF key1 [key2]
返回给定所有集合的交集:
SINTER key1 [key2]
判断 member 元素是否是集合 key 的成员:
SISMEMBER key member
返回集合中的所有成员:
SMEMBERS key
移除并返回集合中的一个随机元素:
SPOP key
返回集合中一个或多个随机数:
SRANDMEMBER key [count]
移除集合中一个或多个成员:
SREM key member1 [member2]
返回所有给定集合的并集:
SUNION key1 [key2]
其他更全面的指令大家可以自行查阅
Redis 有序集合(sorted set)指令:
Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员:
图中通过命令 zadd向 Redis 的有序集合中添加了三个值并关联上分数
其他主要的Sorted Set指令:
向有序集合添加一个或多个成员,或者更新已存在成员的分数:
ZADD key score1 member1 [score2 member2]
获取有序集合的成员数:
ZCARD key
计算在有序集合中指定区间分数的成员数:
ZCOUNT key min max
通过索引区间返回有序集合指定区间内的成员:
ZRANGE key start stop [WITHSCORES]
返回有序集合中指定成员的索引:
ZRANK key member
移除有序集合中的一个或多个成员:
ZREM key member [member ...]
移除有序集合中给定的分数区间的所有成员:
ZREMRANGEBYSCORE key min max
返回有序集中,成员的分数值:
ZSCORE key member
计算给定的一个或多个有序集的并集,并存储在新的 key 中:
ZUNIONSTORE destination numkeys key [key ...]
其他更全面的指令大家可以自行查阅
好啦 大家快去试试吧,其他进阶内容将在后续文章中介绍~~
版权归原作者 热爱飞行的小应学长 所有, 如有侵权,请联系我们删除。