第六章:redis(前篇),第六章redis
文章目录
- 第一节:redis的简介和安装
- ==redis支持的数据类型==
- ==下载地址和参考手册==
- ==安装redis==
- ==配置内存空间与密码==
- ==启运服务端与客户端==
- 第二节:Redis数据基本操作
- ==常用字符串操作==
- ==常用key键操作==
- ==常用哈希hash操作==
- ==常用列表list操作==
- ==常用集合set操作==
- ==常用有序集合zset操作==
- 第三节:redis的管理操作
- ==查看服务端状态==
- ==客户端操作==
- ==数据库操作==
- ==允许远程连接==
第一节:redis的简介和安装
redis是一种高速高性能的内存数据库,存储的是
键值对数据;由于极高的存储和访问速度,redis常被用来作为数据缓存服务器;另外redis是支持定时数据持久化的(即redis会自动将数据写入磁盘)——这是redis大杀四方的重要原因;
redis支持多个不同的端口同时向主端口进行写入,这经常被用在分布式爬虫等场景中;
2010年以后redis开始大面积流行,关系型数据库(核心数据)+redis(缓存)是常规的、常见的数据解决方案;
redis支持的数据类型
redis可以存储的值的数据类型包括:
字符串(单个value最大支持512M)
哈希hash(存储对象)
列表list
集合set
有序集合zset(权重排序)
下载地址和参考手册
redis下载地址官网可点击此处:
可视化工具RedisDesktopManager下载地址可点击此处:
中文版命令参考手册可点击此处:
安装redis
redis 是在Linux玩的数据库,目前并没有其他系统版本,并且数据包是免安装的,下载到的压缩包中包含多个不同历史版本,这里我们选择解压Redis-x64-3.2.100到任意目录(路径不能含有中文)即可,可视化工具RedisDesktopManager也没有什么需要注意的地方,一路安装即可。
例:
配置内存空间与密码
使用管理员权限对配置文件进行修改,添加最大内存和密码两项设置,密码自定义,内存大小按自己电脑的内存大小适当配置即可。为了示范这里我配置的是比较小的内存268435456字节(即256M内存)和以“123456”作为密码
例:
启运服务端与客户端
配置好环境变量后便可启动服务端,将命令行切换到上图所示的redis解压目录,或配置好环境变量后,执行如下命令,注意带上配置文件作为文件参数启动redis服务.(如果没带上配置文件,也没关系,服务端会自动使用默认的配置文件)
启动后可以发现redis的服务处于运行状态,监听在端口6379
例:
不要关闭redis服务端,在新打开的命令行窗口中进入redis的解压目录,或配置好环境变量后,使用如下命令启动redis客户端,这时命令行窗口已进入redis命令模式,输入密码进行登录后,ping一下自己,收到PONG的响应!(和客户端进行打招呼)
例:
第二节:Redis数据基本操作
redis的操作命令有非常多,这里不一一列举,更多操作命令和释义可以点击此处参考官方文档
以下将列举了键值对和其它数据类型的一些常用操作命令。
常用字符串操作
| 命令 | 说明 |
|---|---|
set key value |
设置键值 |
setex key 20 bill |
键值20秒后过期 |
mset key 60 key2 male |
一次性存储多个键值 |
get key |
不存在则返回null |
mget key key2 |
一次性拿取多个键值 |
incr/decr key |
将key的值加减1 |
incrby/decrby key 20 |
将age加减20 |
append key something |
向原有value追加内容 |
strlen key |
获取值长度 |
例:
常用key键操作
| 命令 | 说明 |
|---|---|
keys * |
显示所有键,慎用,数据量大时导致卡死 |
keys a* |
显示所有以a开头的键 |
exists key key2 |
判断key和key2这两个键存在几个 |
type key |
查看值的类型 |
del key key2 |
删除键 |
expire key 30 |
key键值30秒过期 |
ttl key |
查看键值的过期时间 |
persist key |
取消键的过期时间 |
rename key nickname |
重命名键(这样做不安全,容易覆盖已有数据) |
renamenx key nickname |
确保不会覆盖其它键才重命名(nx=not exists,x后缀=exists) |
例:
常用哈希hash操作
hash是将多个字段和值存储在一个键中,类似对象;
| 命令 | 说明 |
|---|---|
hset key field value |
设置key对象的字段为value |
hmset key field1 value1 field2 value2 |
一次性设置key对象的多个字段 |
hget key field |
获取key的field字段的值 |
hmget key field1 field2 |
同时获取key的field1和field2的值 |
hgetall key |
获取key的全部字段和值 |
hkeys key |
获取key的全部字段 |
hvals key |
获取key的全部字段值 |
hlen key |
获取key中所有字段数 |
hexists key field |
判断key中是否有field字段 |
hdel key field |
删除key中的field字段 |
hdel key field1 field2 |
删除p2中的field1和field2字段 |
hstrlen key field |
key中的field的长度 |
例:
常用列表list操作
在redis中也称队列,可按
下标获取元素,也可从头尾弹出或放入;
| 命令 | 说明 |
|---|---|
lpush key 2 |
从左侧向key列表追加元素2 |
rpush key 3 |
从右侧向key列表追加元素3 |
linsert key after 3 4 |
在key列表中3的后边追加元素4 |
lset key 1 200 |
设置key列表中的第1个元素为200(下标从0开始) |
lrange key 0 3 |
查看key列表中下标[0到3]的元素 |
lrange key 0 -1 |
从头看到尾 |
lpop key |
从列表左侧弹出一个值 |
rpop key |
从列表右侧弹出一个值 |
ltrim key 0 1 |
修剪掉key下标[0,1]以外的元素 |
llen key |
key列表元素个数 |
lindex key 0 |
获取key中下标0的元素 |
例:
常用集合set操作
无序元素集,经常用于求交集、并集、差集等;
| 命令 | 说明 |
|---|---|
sadd key 1 2 3 4 |
向集合key中添加元素1,2,3,4 |
smembers key |
查看集合key中的元素 |
scard key |
查询集合元素个数 |
sinter key key2 |
求key和key2的交集 |
sdiff key key2 |
求key相比key2的差集(mset有而mset2无的部分) |
sunion key key2 |
求key和key2的并集 |
sismember key 3 |
判断3是否是key中的元素 |
例:
常用有序集合zset操作
可按权重对元素进行排列;
| 命令 | 说明 |
|---|---|
zadd key score member score member ... |
添加多个值及相应权重 |
zrange key 0 -1 |
返回第一个到最后一个之间所有的元素,按权重升序排列 |
zcard key |
查看元素个数 |
zcount key6 10 |
权重6-10之间的元素个数 |
zscore key member... |
查看某元素的权重 |
zadd key [NX/XX] [CH] [INCR] score member... |
添加/修改多个值元素的权重 |
例:
第三节:redis的管理操作
本节主要是Redis中常见的一引起非数据操作,包括启动服务、启动客户端、查看客户端命令帮助、数据库切换、状态监视等。第一节已经列举了启动服务和客户端的命令
# 启动redis服务并指定配置文件
redis-server.exe redis.windows.conf
# 启动客户端
redis-cli.exe
查看服务端状态
redis-cli --stat -a 123456
例:
结果解析:共有6个键,占用内存693.95K,有2个客户端连接(如果有python端也会算上)
客户端操作
# 查看客户端帮助
redis-cli --help
# 使用密码访问远程redis
redis-cli -h 127.0.0.1 -p 6379 -a 123456
# 查看连接类命令
help @connection
# 查看服务端相关命令
help @server
# 监视服务端收到的信息
monitor
例:客户端、服务端都罗列出了所有相关命令和摘要
例:监视效果如图,当其它客户端访问redis时,所有操作都会被monitor自动记录
数据库操作
# 切换数据库(共提供16个数据库)
select 15
# 清空当前库数据(谨慎使用)
flushdb
# 清空所有数据库(谨慎使用)
flushall
允许远程连接
- 配置文件位置
Linux下:/etc/redis/redis.conf
Windows下:安装文件夹/redis.windows.conf
sudo gedit /etc/redis/redis.conf
- 修改配置文件
1、注释掉bind 127.0.0.1,取消和本机的绑定
2、修改protected-mode yes为protected-mode no,取消保护模式
3、解注释requirepass foobared,将密码修改为自定义的密码如requirepass 123456
注意,关闭或配置防火墙,允许远程访问Redis:
sudo systemctl stop firewalld
# 连接远程
redis-cli -h 192.168.23.181 -p 6379 -a 123456