美文网首页
Redis学习

Redis学习

作者: vvvillian | 来源:发表于2021-01-02 11:05 被阅读0次

一、Redis简介

Redis(REmote DIctionary Service),常被称为数据结构服务器,也是一个高性能的key-value数据库。

Redis与其他的key-value缓存产品有以下三个区别:

1、Redis支持数据的持久化,可以将内存中的数据保存到磁盘中,重启的时候可以再次加载到内存中使用。
2、Redis不仅仅支持key-value类型的数据,还提供了list、set、zset、hash等数据结构的存储。
3、Redis支持数据的备份,即master-slave模型的数据备份。
4、Redis是单线程的,通过多路复用提高处理效率。

Redis的优势:

1、性能极高,读速度能达到110000次/s,写速度达到81000次/s
2、丰富的数据类型
3、操作的原子性,要么成功执行,要么失败不执行
4、丰富的特性。Redis还支持publish/subscribe、通知、key过期等特性。

二、Redis基本命令

2.1 连接本地Redis服务器
$ redis-cli
127.0.0.1:6379> 
2.2 连接远程Redis服务器
$ redis-cli -h host -p port -a password
2.3 Redis key命令
命令 说明
DEL key 删除key
RENAME key newkey 重命名key为newkey
RENAMENX key newkey 仅当newkey不存在时,将key重命名为newkey
EXISTS key 检查key是否存在
TYPE key 返回key所存储的值的类型
EXPIRE key seconds 设置key的过期时间,单位为秒
PEXPIRE key milliseconds 设置key的过期时间,单位为毫秒
EXPIREAT key timestamp 设置key的过期时间,timestamp为Unix时间戳
KEYS pattern 查找所有符合给定模式pattern的key
MOVE key db 将当前数据库的key移到给定db
2.4 Redis字符串命令
命令 说明
SET key value 设置key的值
GET key 获取key的值
GETRANGE key start end 返回key中字符串值的子字符串
MGET key1 [key2...] 返回给定的一个或多个key的值
STRLEN key 返回key所存储的字符串值的长度
APPEND key value 如果key已经存在,则将value追加到该key原来的值后面
2.5 Redis hash命令
命令 说明
HMSET key field1 value1 [field2 value2...] 同时将多个field-value值设置到哈希表key中
HSET key field value 将哈希表key中的字段field的值设置为value
HMGET key field1 [field2...] 获取所给定(一个或多个)字段的值
HGET key field1 获取所给定字段的值
HGETALL key 获取哈希表key的所有字段和值
HKEYS key 获取哈希表key的所有字段
HVALS key 获取哈希表key中的所有值
HLEN key 获取哈希表key的字段数量
2.6 Redis list命令
命令 说明
LPUSH key value1 [value2...] 将一个或多个值插入到列表头部
LPUSHX key value 将一个值插入到已存在列表的头部
LPOP key 移除并返回列表的第一个元素
RPOP key 移除并返回列表的最后一个元素
LRANGE key start end 返回列表指定范围内的元素
LINDEX key index 通过索引获取列表中的元素
LLEN key 返回列表的长度
LREM key count value                                                                                                                                                                     移除列表中的元素。注:count>0表示从表头向表尾搜索,移除与value相等的元素,数量为count;count<0表示从表尾向表头搜索,移除与value相等的元素,数量为count的绝对值;count=0表示移除所有与value相等的元素
LSET key index value 通过索引设置列表元素的值
LTRIM key start end 对列表进行修剪,即只保留指定区间内的元素,不在指定区间内的删除
2.7 Redis set命令
命令 说明
SADD key member1 [member2...] 向集合添加一个或多个成员
SREM key member1 [member2...] 移除集合中一个或多个成员
SCARD key 获取集合的成员数
SMEMBERS key 返回集合中的所有成员
SDIFF key1 key2 返回key1与key2的差异
SINTER key1 [key2...] 返回给定集合间的交集
SUNION key1 [key2...] 返回给定集合的并集
SPOP key 移除并返回集合中随机的一个成员
2.8 Redis zset命令
命令 说明
ZADD key score1 member1 [score2 member2...] 向有序集合添加一个或多个成员,或者更新已存在的成员的分数
ZRANGE key start end [WITHSCORES] 通过索引区间返回指定区间内的成员
ZCARD key 返回有序集合的成员数
ZCOUNT key min max 统计有序集合指定区间分数内的成员数
ZLEXCOUNT key min max 统计有序集合指定字典区间内的成员数,与上一个不同的是,上一个是指定分数,这个是指定字典
ZRANGEBYLEX key min max 通过字典区间返回有序集合的成员
ZRANGEBYSCORE key min max 通过分数区间返回有序集合的成员
127.0.0.1:6379> zrange azset 0 10 withscores
 1) "a"
 2) "0"
 3) "b"
 4) "0"
 5) "c"
 6) "0"
 7) "d"
 8) "0"
 9) "f"
10) "0"
11) "g"
12) "0"
13) "h"
14) "0"
127.0.0.1:6379> zcount azset 0 10
(integer) 7
127.0.0.1:6379> zlexcount azset 0 10
(error) ERR min or max not valid string range item
127.0.0.1:6379> zlexcount azset [a [f
(integer) 5

三、Redis事务

Redis单个命令操作是原子性的,但是事务操作并不是原子性的,事务中的某个命令执行失败并不会回滚之前已执行的,也不会影响后续即将要执行的命令。
Redis以MULTI开始一个事务,然后将多个命令入队到事务中,最后以EXEC命令触发事务,一并执行队列中的所有命令。

127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> set book_name "Master Python in 21 days"
QUEUED
127.0.0.1:6379> get book_name
QUEUED
127.0.0.1:6379> sadd tag "Python" "Programming" "Mastering Series"
QUEUED
127.0.0.1:6379> smembers tag
QUEUED
127.0.0.1:6379> EXEC
1) OK
2) "Master Python in 21 days"
3) (integer) 3
4) 1) "Programming"
   2) "Python"
   3) "Mastering Series"
127.0.0.1:6379> 

四、Redis的应用场景

1、缓存。这是Redis最常用的场景。Redis是基于内存的数据存储器,有着优异的数据读写性能。
2、计数器。Redis提供的INCR命令来实现计数器的功能,内存操作,性能非常好。
3、分布式会话。在应用较多的复杂的集群系统中,一般会搭建以Redis等内存数据库为中心的session服务,来管理session。
4、分布式锁。Redis单线程的这个特性,非常适合用作分布式锁
5、排行榜。Redis提供的有序集合数据结构能实现各种复杂的排行榜功能。
6、社交网络。Redis提供的哈希、集合等数据结构能较好地处理诸如点赞、关注、被关注、共同好友等社交网络的需求。
7、最新列表。Redis的列表结构,LTRIM可以控制列表的长度。
8、消息系统。Redis提供了发布/订阅及阻塞队列功能,能实现一个简单的消息队列系统,不过这个不能和专业的消息队列中间件相比。

相关文章

网友评论

      本文标题:Redis学习

      本文链接:https://www.haomeiwen.com/subject/creroktx.html