Redis基础入门深度指南
一、Redis的本质探究
Redis是一款开源的、以内存为基础的键值对数据库。它具备如下关键特性与功用:
1. 高速读写性能:依托内存进行数据的读写操作,能够高效处理大量的读写请求。
2. 多样数据结构支持:支持字符串、哈希、列表、集合、有序集合等多种数据结构,能够灵活地表示各类数据。
3. 数据冗余与恢复:支持主从复制功能,可实现数据的冗余存储以及故障发生时的恢复。
4. 持久化能力:能够将内存中的数据持久化到磁盘上,保障数据的安全性。
5. 事务特性:支持事务操作,可一次性执行多个命令,确保操作的原子性。
6. 丰富应用场景:可应用于缓存场景(如缓存查询结果、热点数据等,降低数据库负载)、处理高并发读写请求(如访问统计、消息队列等)、实现排行榜与计数器功能、pub/sub消息订阅、QUE计划任务以及分布式锁等场景。
总体而言,Redis是一款性能卓越的内存数据库,凭借其丰富的数据结构以及持久化、事务等功能,广泛应用于各类大型系统中,是非关系型数据库的重要选择之一。
二、Redis的安装方式
1. Windows系统的安装步骤
Redis官方已停止对Windows版本的维护,不过我已将其上传至云盘,大家可直接下载:
链接:https://pan.baidu.com/s/1NdRren-9nO4E5h3PHdcTig?pwd=becn
安装操作步骤如下:
- 第一步:解压下载的文件。
- 第二步:双击运行redis-server.exe文件,启动Redis服务器,如图所示:
服务器启动成功后,界面如图:
- 第三步:双击运行redis-cli.exe文件,启动命令窗口,即可在Windows环境下操作Redis,界面如图:
2. Linux系统的安装指引
可查看我撰写的博客获取Linux系统安装部署Redis的完整详细步骤:Linux系统安装部署Redis完整教程(图文详解)
三、Redis通用指令
- Redis默认配置了16个数据库,若要切换到第2个数据库,可使用命令:
select 1
- 查看当前数据库中键(key)的数量,执行命令:
DBSIZE
- 设定一个键为username,值为mike的数据,命令为:
set username mike
- 获取键为username对应的值,命令是:
get username
- 获取所有的键,使用命令:
keys *
- 清空当前数据库中的所有数据,命令为:
flushdb
- 清空所有数据库中的数据,执行命令:
flushall
四、Redis基础指令
- 检查键为username是否存在,命令为:
exists username
- 将键为username移动到1号数据库,命令是:
move username 1
- 设置键为username在10秒后过期,命令为:
expire username 10
- 查看键为username的剩余过期时间,命令是:
ttl username
- 查看键为username对应值的类型,命令为:
type username
五、五种数据结构类型
5.1、String类型
- 设定键为name的值为htt,命令:
set name htt
- 获取键为name对应的值,命令:
get name
- 对键为name的值进行拼接,例如将值拼接为httstudy,命令:
append name study
- 获取键为name对应值的长度,命令:
strlen name
- 将键为view的值自增1,命令:
incr view
- 将键为view的值自减1,命令:
decr view
- 将键为view的值增加10,命令:
incrby view 10
- 将键为view的值减少10,命令:
decrby view 10
- 截取键为name对应值中下标0 - 3的字符串(例如原字符串为abcdef,截取后为abcd),命令:
getrange name 0 3
- 从下标1开始替换键为name对应的值(例如原字符串为abcdef,替换后为a000efg),命令:
setrange name 1 000
- 设定键为name的值为hello,并且10秒后过期,命令:
setex name 10 hello
- 如果键为title不存在,则设置其值为redis;若存在,则设置操作失败,命令:
setnx title redis
- 一次性设置多个键值对,例如:
mset k1 v1 k2 v2 k3 v3
mset user:1:name htt user:1:age 2 - 一次性获取多个键对应的值,例如:
mget k1 k2 k3
mget user:1:name user:1:age - 如果k1已经存在,那么k1和k4的设置操作都会失败(体现事务的原子性),命令:
msetnx k1 v1 k4 v4
- 如果键为username不存在,则返回nil并设置该值;若存在,则获取原值并设置新值,命令:
getset username htt
如图所示能更清晰理解:
5.2、List集合类型
- 将一个或多个值插入到列表的头部,命令:
lpush list 1
如图所示:
- 将一个或多个值插入到列表的尾部,命令:
rpush list 4
如图所示:
- 通过区间获取列表中的具体值,命令:
lrange list 0 -1
- 移除列表的第一个元素(例如值为3),命令:
lpop list
- 移除列表的最后一个元素(例如值为4),命令:
rpop list
- 通过下标获取列表中的某个值,命令:
lindex list 0
- 获取列表的长度,命令:
llen list
- 移除列表中指定个数的特定值(例如移除1个值为2的元素,精确匹配),命令:
lrem list 1 2
- 截取列表中下标1到下标2之间的元素集合,并覆盖原列表,命令:
ltrim list 1 2
- 更新列表中下标0的值为bbb(若下标0的值不存在则报错),命令:
lset list 0 bbb
- 将某个具体值插入到指定具体元素(默认第一个)的前面或后面,例如:
linsert list BEFORE kkk aaa
如图所示:
linsert list AFTER kkk aaa
如图所示:
5.3、Set集合类型
- 向set集合中添加一个元素,命令:
sadd set hello
- 查看set集合中的所有元素,命令:
smembers set
- 检查set集合中是否存在某个元素,命令:
sismember set world
- 随机抽取set集合中的1个元素,命令:
srandmember set
- 随机抽取set集合中的2个元素,命令:
srandmember set 2
- 随机删除set集合中的某个元素,命令:
spop set
- 将set集合中的world元素移动到set2集合中,命令:
smove set set2 world
- 计算set2集合相对于set集合的差集,命令:
sdiff set2 set
如图所示:
- 求set集合和set2集合的交集,命令:
sinter set set2
- 求set集合和set2集合的并集并去重,命令:
sunion set set2
如图所示:
5.4、Hash集合类型
- 向hash集合中存储键值对数据,命令:
hset hash username mike
- 从hash集合中获取数据,命令:
hget hash username
- 同时向hash集合中添加多个值,命令:
hmset hash username jack age 2
- 同时从hash集合中获取多个值,命令:
hmget hash username age
- 获取hash集合中的所有键值对,命令:
hgetall hash
- 删除hash集合中指定的key字段,命令:
hdel hash username
- 获取hash集合的长度,命令:
hlen hash
- 检查hash集合中指定字段是否存在,命令:
hexists hash username
- 获取hash集合中的所有key,命令:
hkeys hash
- 获取hash集合中的所有值,命令:
hvals hash
- 为hash集合中的指定字段增加增量,命令:
hincrby hash views 1
- 如果不存在则直接设置值,存在则设置失败,命令:
hsetnx hash password 123456
5.5、Zset有序集合类型
- 添加一个值到zset有序集合中,命令:
zadd zset 1 first
- 向zset有序集合中添加多个值,命令:
zadd zset 2 second 3 third 4 four
- 获取zset有序集合中的所有元素,命令:
zrange zset 0 -1
- 对zset有序集合中的元素按从小到大排序(-inf表示负无穷,+inf表示正无穷),命令:
zrangebyscore zset -inf +inf
如图所示:
- 按从小到大排序并输出键值,命令:
zrangebyscore zset -inf +inf withscores
如图所示:
- 指定范围为负无穷到1,命令:
zrangebyscore zset -inf 1 withscores
如图所示:
- 移除zset有序集合中指定的元素,命令:
zrem zset four
- 查看zset有序集合中的元素个数,命令:
zcard zset
- 反转指定范围,命令:
zrevrange zset 1 2
如图所示:
六、总结
以上便是Redis入门教程的详细笔记总结,后续会在博客主页持续更新有关Redis的相关内容。
文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/12752.html