redis详解

简述

  redis是一款高性能的NOSQL系列的非关系型数据库,与关系型数据库不同redis的数据是存储在内存中的。因为操作关系型数据库的过程非常耗时,当服务器查询一些不太经常变化的数据时,我们可以把这些数据放到内存中,这和缓存类似,先到redis中查询,有数据就不用查mysql了。

  主流的NOSQL产品有键值形式存储数据库、列存储数据库、文档型存储数据库、图形式数据库,本片博客介绍的redis就是键值形式存储的数据库。

redis的数据结构

  我们需要知道的是redis存储的是键值对,其中key是字符串形式,value有5种不同的数据结构

字符串类型 string  
哈希类型 hash  map格式
列(链)表类型 list linkedlist格式。支持重复元素
集合类型 set  不允许重复元素
有序集合类型 sortedset 不允许重复元素,且元素有顺序

redis的下载和安装

  官网:https://redis.io/ 中文网:https://www.redis.net.cn/

  下载好并解压后我们得到如下文件

redis详解

 

 

  解压后可直接使用,我们只需关心三个文件

redis.windows.conf 配置文件
redis-cli.exe redis的客户端
redis-server.exe redis服务器端

  想要运行直接运行redis-server.exe即可,它监听的端口是6379

  运行redis-server.exe后不关闭cmd窗口,运行redis-cli.exe即可连接到本机的redis数据库,就可以敲命令了

常用命令操作

字符串类型

存储 set key value
获取 get key
删除 del key

redis详解

哈希类型  

  Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。

存储 hset key field value
获取

hget key field   获取对应的field的value

hgetall key       获取当前的所有key和value对应关系

删除 hdel key field

  注意field是当前key的value里的key

redis详解

 

 

列表类型

  列表也是链表,它按照插入顺序进行排序,我们可以添加一个元素到列表的头部或尾部

添加

lpush key value: 将元素加入列表左表

rpush key value:将元素加入列表右边

获取 lrange key start end
删除

lpop key: 删除列表最左边的元素,并将元素返回

rpop key: 删除列表最右边的元素,并将元素返回

  注意lrange的起始和结束索引是从0开始左闭右闭的,若想获取所有数据则为 0 -1

  这种形式我们可以当成一个双向队列来理解

redis详解

 

集合类型

  Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

 

  Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

 

 

存储 sadd key value
获取 smembers key:获取set集合中所有元素
删除 srem key value:删除set集合中的某个元素

 

redis详解

 

有序集合类型

  Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。

存储 zadd key score value
获取 zrange key start end [withscores]
删除 zrem key value

 

 

 

 

 

 

redis详解

 

 

  注意在zrange后加withscores参数会同时把他们的分数拿出来

通用命令

keys * 查询所有的键
type key 获取键对应的value的类型
del key 删除指定的key value

redis详解

 

 

redis的持久化

  redis是内存中的数据库,当redis服务器重启或者电脑重启,数据就会丢失。我们可以把redis的数据持久化到硬盘中,这样数据就不会丢失。数据库持久化方法分为RDB和AOF两种方式。

RDB  

  RDB是默认方式,不需要进行配置。redis会在一段时间内检测key的变化,然后持久化数据。

  我们打开redis的配置文件,可以看到save段有三行,代表:

save 900 1 900秒之后有1个key发生了改变就进行一次持久
save 300 10 300秒之后有1个key发生了改变就进行一次持久
save 60  10000 900秒之后有1个key发生了改变就进行一次持久

  我可以根据服务器的需求更改这三个配置文件,并通过以配置文件方式打开redis,达到自动保存的条件后redis会自动把数据持久化到redis的根目录下,文件名叫dump.rdb。当我们重启数据库后redis会自动将持久化的数据载入内存。

AOF 

  AOF是日志记录的方式,可以记录每一条命令的操作。可以每一次命令后持久化数据,对性能影响比较大。

  我们打开redis的配置文件,找到appendonly的配置项,将no改为yes即可

redis详解

 

 

  改为yes就开启了AOF的持久化操作,再到下面找到有三种配置

redis详解

appendfsync always 每一次操作都进行持久化
appendfsync everysec 每隔一秒进行一次持久化
appendfsync no 不进行持久化

  配置完后我们打开redis服务端,然后用客户端添加数据,可以看到redis目录下有一个叫appendonly.aof的持久化文件

  当我们再次启动服务器,再打开就有数据了

 

 

 

 

redis详解

上一篇:crontab,定时任务执行找不到库or shell可执行,crontab 定时任务下就不能执行,tensorflow,ImportError: libcuda.so.1: cannot open shared object file: No such file or directory


下一篇:php分页实例附代码