Redis的介绍以及安装
redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库,缓存和消息中间件
高速缓存介绍
- 高速缓存利用内存保存数据,读写速度远超硬盘
- 高速缓存可以减少 I/O 操作,降低 I/O 压力

- Redis是Vmware开发的开源免费的KV型NoSQL缓存产品
- Redis具有很好的性能,最多可以提供10万次/秒的读写
- 目前新浪微博团队组建了世界上最大规模的Redis集群
Redis的安装方式
Redis的安装方式有很多,如果之前我们利用yum安装过Redis,可以对其进行卸载后再用源码编译安装
卸载通过yum安装的redis数据库:
yum remove redis -y
yum安装redis
1.yum安装
|
1
2
3
4
5
6
7
|
#前提得配置好阿里云yum源,epel源#查看是否有redis包yum list redis#安装redisyum install redis -y#安装好,启动redissystemctl start redis |
2.检测redis是否工作
|
1
2
3
4
|
redis-cli #redis 客户端工具#进入交互式环境后,执行ping,返回pong表示安装成功127.0.0.1:6379> pingPONG |
源码安装redis,编译安装
编译安装的优势是:
- 编译安装时可以指定扩展的module(模块),php、apache、nginx都是一样有很多第三方扩展模块,如mysql,编译安装时候,如果需要就定制存储引擎(innodb,还是MyIASM)
- 编译安装可以统一安装路径,linux软件约定安装目录在/opt/下面
- 软件仓库版本一般比较低,编译源码安装可以根据需求,安装最新的版本
通过源码编译安装:
|
1
2
3
4
5
6
7
8
9
10
|
1.下载redis的源代码wget http://download.redis.io/releases/redis-4.0.10.tar.gz2.解压缩源码tar -zxf redis-4.0.10.tar.gz3.进入redis源码目录,编译安装,生成可执行命令redis不需要执行configure,因为他已经有了makefile4.通过如下2个命令,生成redis的可执行文件make && make installmake install 安装到指定目录,默认在/usr/local/bin5.此时已经可以启动redis服务端了 |
redis可执行文件:

|
1
2
3
4
5
6
|
./redis-benchmark //用于进行redis性能测试的工具./redis-check-dump //用于修复出问题的dump.rdb文件./redis-cli //redis的客户端./redis-server //redis的服务端./redis-check-aof //用于修复出问题的AOF文件./redis-sentinel //用于集群管理 |
安全性能下的启动redis ,在redis.conf中,更改默认端口,添加密码,开启安全模式
在redis.conf配置文件中进行过滤
|
1
2
|
grep -v "^#" redis.conf | grep -v "^$" 过滤出 空白行,以及注释行以外的,有用信息egrep -v "(^#|^$)" redis.conf |
redis配置文件:
手动创建Redis配置文件
|
1
2
3
4
5
6
7
8
|
touch pingredis.conf#pingredis.conf 内容如下[root@master redis-4.0.10]# cat pingredis.confbind 0.0.0.0protected-mode yes 安全模式port 6888daemonize yes 后台运行requirepass 123 |
redis启动:
启动redis服务端,指定配置文件
|
1
2
3
|
redis-server pingredis.conf默认情况下,redis-server会以非daemon的方式来运行,且默认服务端口为6379。 |
使用redis客户端
|
1
2
3
|
redis-cli -p 6888进入之后,可以通过auth指令,进行redis密码验证验证通过后,可以发送ping,得到pong代表redis正常 |
redis 远程连接(Windows进行连接)
Windows命令提示符下
|
1
2
3
4
5
6
7
8
9
|
C:\WINDOWS\system32>pip install redis C:\WINDOWS\system32>python>>> import redis>>> conn = redis.Redis(host="192.168.1.103", port="6888", password="ping")>>> conn.set("hello","world")True>>> conn.get("hello")b'world' |
linux下:
|
1
2
3
4
5
6
7
|
[root@localhost /]# redis-cli -p 6888127.0.0.1:6888> auth pingOK127.0.0.1:6888> keys *1) "hello"127.0.0.1:6888> get hello"world" |
Redis数据结构
清空所有的键FLUSHDB
|
1
2
3
4
5
6
|
redis是一种高级的key:value存储系统,其中value支持五种数据类型字符串(strings)散列(hashes)列表(lists)集合(sets)有序集合(sorted sets) |
基本命令
|
1
2
3
4
5
6
7
8
9
10
11
|
set key value #设置一个键值对get key #获取key的值keys * 查看所有keytype key 查看key类型expire key seconds 过期时间ttl key 查看key过期剩余时间 -2表示key已经不存在了persist 取消key的过期时间 -1表示key存在,没有过期时间exists key 判断key存在 存在返回1 否则0del keys 删除key 可以删除多个dbsize 计算key的数量 |
数据结构示例:
1.strings类型
- set 设置key
- get 获取key
- append 追加string
- mset 设置多个键值对
- mget 获取多个键值对
- del 删除key
- incr 递增+1
- decr 递减-1
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
127.0.0.1:6379> set name 'ping' #设置keyOK127.0.0.1:6379> get name #获取value"ping"127.0.0.1:6379> set name 'pong' #覆盖keyOK127.0.0.1:6379> get name #获取value"pong"127.0.0.1:6379> append name ' ddd' #追加key的string(integer) 7127.0.0.1:6379> get name #获取value"pongddd"127.0.0.1:6379> mset user1 'zhangsan' user2 'lisi' #设置多个键值对OK127.0.0.1:6379> get user1 #获取value"zhangsan"127.0.0.1:6379> get user2 #获取value"lisi"127.0.0.1:6379> keys * #找到所有key1) "user2"2) "name"3) "user1"127.0.0.1:6379> mget user1 user2 name #获取多个value1) "zhangsan"2) "lisi"3) "pongddd"127.0.0.1:6379> del name #删除key(integer) 1127.0.0.1:6379> get name #获取不存在的value,为nil(nil)127.0.0.1:6379> set num 10 #string类型实际上不仅仅包括字符串类型,还包括整型,浮点型。redis可对整个字符串或字符串一部分进行操作, 而对于整型/浮点型可进行自增、自减操作。OK 127.0.0.1:6379> get num"10"127.0.0.1:6379> incr num #给num string 加一 INCR 命令将字符串值解析成整型,将其加一,最后将结果保存为新的字符串值,可以用作计数器(integer) 11127.0.0.1:6379> get num "11"127.0.0.1:6379> decr num #递减1 (integer) 10127.0.0.1:6379> decr num #递减1(integer) 9127.0.0.1:6379> get num"9" |
2.list类型
- lpush 从列表左边插
- rpush 从列表右边插
- lrange 获取一定长度的元素 lrange key start stop
- ltrim 截取一定长度列表
- lpop 删除最左边一个元素
- rpop 删除最右边一个元素
- lpushx/rpushx key存在则添加值,不存在不处理
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
lpush duilie 'zhangsan' 'lisi' #新建一个duilie,从左边放入三个元素llen duilie #查看duilie长度lrange duilie 0 -1 #查看duilie所有元素rpush duilie 'wangwu' #从右边插入chaogelpushx duilie2 'dsb' #列表存在则添加 dsb元素,列表不存在则不作处理ltrim duilie 0 2 #截取队列的值,从索引0取到2,删除其余的元素lpop #删除左边的第一个rpop #删除右边的第一个 |
3.sets集合类型
redis的集合,是一种无序的集合,集合中的元素没有先后顺序。
集合相关的操作也很丰富,如添加新元素、删除已有元素、取交集、取并集、取差集等。我们来看例子:
- sadd/srem 添加/删除 元素
- sismember 判断是否为set的一个元素
- smembers 返回集合所有的成员
- sdiff 返回一个集合和其他集合的差异
- sinter 返回几个集合的交集
- sunion 返回几个集合的并集
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
sadd zoo zhangsan lisi wangwu #添加集合,有三个元素,不加引号就当做字符串处理smembers zoo #查看集合zoo成员srem zoo zhangsan #删除zoo里面的zhangsansismember zoo lisi #返回改是否是zoo的成员信息,不存在返回0,存在返回1sadd zoo xiaohua #再把xiaohua加入zoosmembers zoo #查看zoo成员sadd zoo2 xiaoming xiaochen #添加新集合zoo2sdiff zoo zoo2 #找出集合zoo中有的,而zoo2中没有的元素sdiff zoo2 zoo #找出zoo2中有,而zoo没有的元素sinter zoo zoo1 #找出zoo和zoo1的交集,都有的元素sunion zoo zoo1 #找出zoo和zoo1的并集,所有的不重复的元素 |
4.有序集合
都是以z开头的命令
用来保存需要排序的数据,例如排行榜,成绩,工资等。
实例
利用有序集合的排序,排序学生的成绩
|
1
2
3
4
5
6
|
127.0.0.1:6888> zadd test 70 zhangsan(integer) 1127.0.0.1:6888> zadd test 80 lisi(integer) 0127.0.0.1:6888> zadd test 90 wangwu(integer) 0 |
排行榜,zrevrange 倒叙 zrange正序
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
127.0.0.1:6888> zrevrange test 0 -1 withscores1) "wangwu"2) "90"3) "lisi"4) "20"5) "zhangsan"6) "10"127.0.0.1:6888> zrange test 0 -1 withscores1) "zhangsan"2) "10"3) "lisi"4) "20"5) "wangwu"6) "90" |
移除有序集合test中的成员,zhangsan给移除掉
|
1
2
3
4
5
6
7
8
|
127.0.0.1:6888> zrem test zhangsan(integer) 1127.0.0.1:6888> zrange test 0 -1 withscores1) "lisi"2) "20"3) "wangwu"4) "90"127.0.0.1:6888> |
返回有序集合test的基数
|
1
2
|
127.0.0.1:6888> zcard test(integer) 2 |
返回成员的score值
|
1
2
|
127.0.0.1:6888> zscore test lisi"20" |
zrank返回有序集合中,成员的排名。默认按score,从小到大排序。
|
1
2
3
4
5
6
7
8
9
|
127.0.0.1:6888> zrange test 0 -1 withscores1) "lisi"2) "20"3) "wangwu"4) "90"127.0.0.1:6888> zrank test lisi(integer) 0127.0.0.1:6888> zrank test wangwu(integer) 1 |
5.哈希数据结构
哈希结构就是 k1 -> k1 : v1 如同字典 套字典 { k1 : { k2: v2 } } ,取出v2 必须 k1,取出k2
hashes即哈希。哈希是从redis-2.0.0版本之后才有的数据结构。
hashes存的是字符串和字符串值之间的映射,比如一个用户要存储其全名、姓氏、年龄等等,就很适合使用哈希。
- hset 设置散列值
- hget 获取散列值
- hmset 设置多对散列值
- hmget 获取多对散列值
- hsetnx 如果散列已经存在,则不设置(防止覆盖key)
- hkeys 返回所有keys
- hvals 返回所有values
- hlen 返回散列包含域(field)的数量
- hdel 删除散列指定的域(field)
- hexists 判断是否存在
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
redis hash是一个string类型的field和value的映射表语法 hset key field value hset news:1 title "first news title" #设置第一条新闻 news的id为1,添加数据title的值是"first news title"hset news:1 content "news content" #添加一个conntent内容hget news:1 title #获取news:1的标题hget news:1 content #获取news的内容hmget news:1 title content #获取多对news:1的 值hmset news:2 title "second news title" content "second Contents2" #设置第二条新闻news:2 多个fieldhmget news:2 title content #获取news:2的多个值hkeys news:1 #获取新闻news:1的所有keyhvals news:1 #获取新闻news:1的所有值hlen news:1 #获取新闻news:1的长度hdel news:1 title #删除新闻news:1的titlehlen news:1 #看下新闻news:1的长度hexists news:1 title #判断新闻1中是否有title,不存在返回0,存在返回1 |
Redis的介绍以及安装的更多相关文章
- NoSQL数据库之Redis数据库:Redis的介绍与安装部署
NoSQL(NoSQL = Not Only SQL),它指的是非关系型的数据库.随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的w ...
- redis学习(一) redis的介绍与安装
redis简单介绍 redis全称remote-dictionary-server 直译为远程字典服务器, 是一个高性能的key-value存储系统,也被称为数据结构服务器,因为其所存储的数据值(va ...
- 短信登录与注册接口、前端所有方式登录注册页面、redis数据库介绍与安装
今日内容概要 短信登陆接口 短信注册接口 登陆注册前端 redis介绍和安装 内容详细 1.短信登陆接口 在视图类 user/views.py中修改并添加: from .serializer impo ...
- python学习笔记(十一)redis的介绍及安装
一.redis简介 1.redis是一个开源的.使用C语言编写的.支持网络交互的.可基于内存也可持久化的Key-Value数据库. 2.redis的官网地址,非常好记,是redis.io. ...
- Redis基础介绍及安装示例
1.基本概念 Redis是由Salvatore Sanfilippo(意大利)开发的一个开源的高性能键值存储数据库,于2009年发布第一个版本并与同一年开源,官方站点:http://www.redis ...
- Redis简单介绍与安装
Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序. Redis有三个主要特点,使它优越于其它键值数据存储系统 - 1) Redis将其数据库完全保存在内 ...
- Redis介绍以及安装(Linux)
Redis介绍以及安装(Linux) redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcached类似,但很大程度补偿了memcached的不足,它支持存储的 ...
- 【redis】01Redis的介绍与安装部署
单元目标: 1.NoSQL介绍 2.Redis的介绍 3.Redis适用场合 4.Redis的安装与部署 5.Redis的数据类型 6.Redis的常用命令 7.Redis的高级应用 通过 ...
- Redis介绍和安装
一. Redis的介绍 Redis 是一个Key-Value存储的系统:它支持存储的value类型有string(字符串),list(列表),set(集合),zset(有序集合):为了保证效率:数据都 ...
随机推荐
- jenkins安装和邮件配置
一.jenkins下载 Jenkins的下载地址是https://jenkins.io/download/,下载的时候可以选择各个版本的以及对应操作系统的版本,一般你下载的时候下载通用的.war文件即 ...
- jmeter压测以及用Badboy录脚本
一.压测时的基本配置: 1.设置线程数.延迟几秒.循环次数打勾表示一直去循环.调度器打勾可以填写持续时间.启动时间等 线程数:就是并发的用户数 N Ramp-Up Period(in second ...
- 终于有人把MYSQL索引讲清楚了
一什么是索引 索引在MYSQL中也可以称为键,其是存储引擎用于快速查找记录的一种数据结构:这样听起来有点生涩,你可能难以理解:如果给你一本书,你如何能够精确的查找到书中某个章节的具体位置呢?我们肯定是 ...
- 1. Linux系统优化
1. 系统安装 本着纯净系统的原则,我们在安装系统时,应选择minimal install选项,来执行最小化安装,以便有需要时,安装我们需要的安装软件包. 操作系统为CentOS7.3 1611 下载 ...
- 【深入理解Linux内核架构】6.6 资源分配
一段摘自<Linux设备驱动程序>的话: 每种外设都通过读写寄存器进行控制.大部分外设都有多个寄存器,不管是内存地址空间还是I/O地址空间,这些寄存器的访问地址都是连续的. 在硬件层,内存 ...
- SpringBoot中使用切面的每次传的参数,进行解析,验签,并返回解码后的参数
目的,在每次请求的时候,对每次传的参数,进行解析,验签,并返回解码后的参数, 以json传递: 例子背景: IOT平台提供对外可访问的接口, 需要对所有参数的传递做到 不泄露.认证的目的:所以需要在每 ...
- spring framework源码之AnnotationConfigApplicationContext
AnnotationConfigApplicationContext 内部使用了AnnotatedBeanDefinitionReader:ClassPathBeanDefinitionScanner ...
- ant在windows环境下安装
前言: Apache Ant,是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于 Java 环境中的软件开发. 举个例子说明:平时在写 Java 程序的时候,基本的步骤都是 打 ...
- Oracle学习(十)Oracle定时任务
一.Oracle定时任务基础 简介 oracle job 是应用在数据库层面,用来定时执行存储过程或者 SQL 语句的定时器. 查询 --当前库中运行的 job SELECT t.* FROM dba ...
- HashMap,HashSet,HashTable,LinkedHashMap,LinkedHashSet,ArrayList,LinkedList,ConcurrentHashMap,Vector 区别
ConcurrentHashMap是弱一致性,也就是说遍历过程中其他线程可能对链表结构做了调整,因此get和containsKey返回的可能是过时的数据 ConcurrentHashMap是基于分段锁 ...