Redis

redis简介

Redis 是一个使用 C 语言写成的,开源的、key-value 结构的、非关系型数据库。它支持存储的 value 类型相对更多,包括 String(字符串)、List(列表)、Set(集合)、Sorted Set(有序集合) 和 Hash(哈希),而且这些操作都是原子性的

在此基础上,Redis 支持各种不同方式的排序,为了保证效率,数据都是缓存在内存中,Redis 可以周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步

redis是一个开源的,内存中的数据结构存储系统,它可以用作数据库,缓存和消息中间件,支持网络、可基于内存亦可持久化的日志型、Key-Value型数据库,并提供多种语言的API,为了实现其卓越的性能,Redis采用运行在内存中的数据集工作方式,根据使用情况,管理员可以每隔一定时间将数据集导出到磁盘,或者追加到命令日志中,也可以关闭持久化功能,将Redis作为一个高效的网络的缓存数据功能使用

 

redis支持的数据类型

redis支持多种类型的数据结构

 

redis的三个特点

 

 

 

redis是运维方面的技术栈,在大数据时代,redis可以解决高并发的问题,因此在后端也被广泛运用

 

Redis安装与启动

redis在企业中大部分是部署在linux操作系统上的,很少会部署在windows上,但是在操作上基本是一样的

 

下载:http://redis.io/download

Redis没有官方的windows版本,但是微软开源技术团队开发和维护着这个Win64的版本,可在https://github.com/MicrosoftArchive/redis/releases下载redis解压即用

可以查看一下安装说明:README.md 和 INSTALL

 

redis的默认端口:6379

redis-cli.exe 客户端

redis-server.exe 服务端

在开启客户端前需要开启服务端

redis-server.exe #使用默认配置启动redis服务

redis-server.exe redis.conf #或者指定服务器IP连接redis服务

 

出现闪退需要相关指令开启,需要先在配置文件中放开bind 127.0.0.1的注释,绑定本机ip地址,在当前路径下开启cmd,输入redis-server.exe redis.windows.conf

 

启动客户端连接:

redis-cli #使用默认配置连接服务器

redis-cli -h 127.0.0.1 -p 6379 #或者指定服务器IP连接redis服务

查看客户端是否连接成功

> ping

PONG

注:出现PONG,则连接成功!

 

redis服务关闭

关闭服务:

客户端命令窗口关闭:redis-cli -h 127.0.0.1 -p 6379 shutdown

注:若配置安全认证需添加密码 如

redis-cli -h 127.0.0.1 -p 6379 -a pwd shutdown

 

数据库操作:

查看所有存在的键值

keys *

清空所有数据库数据

flushall

清空当前数据库数据

flushdb

 

五种基本数据类操作

String操作

String举例:

添加、修改一个string:

重新赋值:

查询一个string:

append 追加一个string,返回字符串长度

删除一个key:

返回字符串长度

 

HashMap操作

hash是一个string类型的field和value的映射表,可以看作是一个Map表结构容器

添加(创建)一个hash:

返回整个hash:

返回hash中的一个字段:

返回hash中的多个字段:

删除一个hash中的字段:

添加、修改hash中的字段,如果修改成功返回0

查看指定键是否存在:

注:返回整数1或0

1表示哈希包含该字段

0表示哈希不包含该字段,或key不存在

 

List操作

redis中数组底层封装的是栈、队列

添加元素到列表头(leftpush)

获取列表指定范围内的元素(起始索引到结束索引位置),-1会取到所有数据

添加元素到列表尾(rightpush)

查看key对应的value类型:

通过索引获取列表中的值

获取列表长度:

移除元素:

count > 0:从表头开始向表尾搜索,移除与value相等的元素,移除count个

count < 0:从表尾开始向表头搜索,移除与value相等的元素,移除|count|个

count = 0:移除表中所有与value相等的值

 

Set操作

Set是String类型的无序集合,集合成员是唯一的,不允许重复

添加数据到集合:

返回集合数据:

获取集合数量:

移除集合中的值:

 

SortedSet操作

Redis有序集合和集合一样也是String类型元素的集合,且不允许重复的成员

有序集合特点:

1、有序集合中每个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的排序

2、有序集合的成员是唯一的,但分数(score)却可以重复

3、有序集合和集合一样也是String类型元素的集合,且不允许重复的成员

添加元素到集合:

注:如果value(a)存在,更新分数,否则添加新value,分数可以相同

返回指定元素的分数:

查询元素(起始索引到结束索引位置):

移除集合中的元素:

根据分数区间查询元素个数

 

有序集合与列表(EXT)

有序集合类型在某些方面和列表类型有些相似:

1、二者都是有序的

2、二者都可以获得某一范围的元素

但是二者有着很大的区别,这使得它们的应用场景也是不同的: