redis

  1. Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件

yum安装redis

1.yum安装

 
  1. #前提得配置好阿里云yum源,epel源
  2. #查看是否有redis包
  3. yum list redis
    #安装redis
    yum install redis -y
    #安装好,启动redis
    systemctl start redis
 

2.检测redis是否工作

  1. redis-cli #redis 客户端工具
  2. #进入交互式环境后,执行ping,返回pong表示安装成功
  3. 127.0.0.1:6379> ping
  4. PONG

源码安装redis,编译安装

大家用过yum,是相当省事好用吧,为什么还要学习源码安装?

有人说编译安装性能好?错

编译安装的优势是:

  • 编译安装时可以指定扩展的module(模块),php、apache、nginx都是一样有很多第三方扩展模块,如mysql,编译安装时候,如果需要就定制存储引擎(innodb,还是MyIASM)
  • 编译安装可以统一安装路径,linux软件约定安装目录在/opt/下面
  • 软件仓库版本一般比较低,编译源码安装可以根据需求,安装最新的版本
 
  1. 1.下载redis源码
  2. wget http://download.redis.io/releases/redis-4.0.10.tar.gz
    2.解压缩
    tar -zxf redis-4.0.10.tar.gz
    3.切换redis源码目录
    cd redis-4.0.10.tar.gz
    4.编译源文件
    make
    5.编译好后,src/目录下有编译好的redis指令
    6.make install 安装到指定目录,默认在/usr/local/bin
 

redis可执行文件

 
  1. ./redis-benchmark //用于进行redis性能测试的工具
  2. ./redis-check-dump //用于修复出问题的dump.rdb文件
  3. ./redis-cli //redis的客户端
  4. ./redis-server //redis的服务端
  5. ./redis-check-aof //用于修复出问题的AOF文件
  6. ./redis-sentinel //用于集群管理
 

启动redis服务端

  1. 启动redis非常简单,直接./redis-server就可以启动服务端了,还可以用下面的方法指定要加载的配置文件:
  2. ./redis-server ../redis.conf
    默认情况下,redis-server会以非daemon的方式来运行,且默认服务端口为6379
    redis.conf中的daemonize 改为yes,就可以后台运行

使用redis客户端

 
  1. #执行客户端命令即可进入
  2. ./redis-cli
  3. #测试是否连接上redis
  4. 127.0.0.1:6379 > ping
  5. 返回pong代表连接上了
  6.  
  7. //用set来设置key、value
  8. 127.0.0.1:6379 > set name "chaoge"
  9. OK
  10. //get获取name的值
  11. 127.0.0.1:6379 > get name
  12. "chaoge"
 

redis数据结构

 
  1. redis是一种高级的keyvalue存储系统,其中value支持五种数据类型
  2. 字符串(strings
  3. 散列(hashes
  4. 列表(lists
  5. 集合(sets
  6. 有序集合(sorted sets
 

数据结构示例

  1. 1.strings类型
 
  1. set name "chaoge66" //设置name
  2. get name //读取name
  3.  
  4. strings类型支持数值操作
  5. set age "17" //设置key age
  6. get age //读取age
  7. incr age //数值+1,遇见数值操作时,redis会将字符串类型转成数值
  8. get age //此时age是18,value仍然是字符串
    type age    //查看键的类型
 
  1. 2.list类型
 
  1. redis的另外一个数据结构叫做lists,中文叫列表
  2. lists常用操作包括
  3. LPUSH lists左侧插入一个新元素
  4. RPUSH lists右侧插入一个新元素
  5. LRANGE lists指定范围提取元素
    LPOP 左侧删除
    RPOP  右侧删除
  6.  
  7. 示例:

lpush mylist "1" //新建一个mylist,在头部插入元素"1"
(integer) 1    //返回mylist元素个数

rpush mylist "2"  //在mylist右侧插入元素"2"

(INTEGER) 2    //返回mylist元素个数

127.0.0.1:6379> lpush mylist "0"  //在mylist左侧插入元素"0"

(integer) 3    //返回mylist元素个数

//列出mylist中从编号0到编号1的元素

127.0.0.1:6379> lrange mylist 0 -1 
1) "0"
2) "1"
3) "2"

lists类型常用在,消息队列、实现分页功能、存储文章评论

 

3.sets集合类型

redis的集合,是一种无序的集合,集合中的元素没有先后顺序。

集合相关的操作也很丰富,如添加新元素、删除已有元素、取交集、取并集、取差集等。我们来看例子:

 
  1. //向集合myset中加入一个新元素"one"
  2. 127.0.0.1:6379> sadd myset "one"
  3. (integer) 1
  4. 127.0.0.1:6379> sadd myset "two"
  5. (integer) 1
  6. //列出集合myset中的所有元素
  7. 127.0.0.1:6379> smembers myset
  8. 1) "one"
  9. 2) "two"
  10. //判断元素1是否在集合myset中,返回1表示存在
  11. 127.0.0.1:6379> sismember myset "one"
  12. (integer) 1
  13. //判断元素3是否在集合myset中,返回0表示不存在
  14. 127.0.0.1:6379> sismember myset "three"
  15. (integer) 0
  16. //新建一个新的集合yourset
  17. 127.0.0.1:6379> sadd yourset "1"
  18. (integer) 1
  19. 127.0.0.1:6379> sadd yourset "2"
  20. (integer) 1
  21. 127.0.0.1:6379> smembers yourset
  22. 1) "1"
  23. 2) "2"
  24. //对两个集合求并集
  25. 127.0.0.1:6379> sunion myset yourset
  26. 1) "1"
  27. 2) "one"
  28. 3) "2"
  29. 4) "two"
  30.  
  31. 集合的使用比如QQ社交功能中的“好友标签”,朋友给你的好友标签“sb”,“dsb”等等,就可以吧每一个用户的标签存储在集合里
 

4.sorted sets有序集合

redis不但提供了无需集合(sets),还很体贴的提供了有序集合(sorted sets)。有序集合中的每个元素都关联一个序号(score),这便是排序的依据。

很多时候,我们都将redis中的有序集合叫做zsets,这是因为在redis中,有序集合相关的操作指令都是以z开头的,比如zrange、zadd、zrevrange、zrangebyscore等等

 
  1. 127.0.0.1:6379> zadd myzset 1 baidu.com
  2. (integer) 1
  3. //向myzset中新增一个元素360.com,赋予它的序号是3
  4. 127.0.0.1:6379> zadd myzset 3 360.com
  5. (integer) 1
  6. //向myzset中新增一个元素google.com,赋予它的序号是2
  7. 127.0.0.1:6379> zadd myzset 2 google.com
  8. (integer) 1
  9. //列出myzset的所有元素,同时列出其序号,可以看出myzset已经是有序的了。
  10. 127.0.0.1:6379> zrange myzset 0 -1 withscores
  11. 1) "baidu.com"
  12. 2) "1"
  13. 3) "google.com"
  14. 4) "2"
  15. 5) "360.com"
  16. 6) "3"
  17. //只列出myzset的元素
  18. 127.0.0.1:6379> zrange myzset 0 -1
  19. 1) "baidu.com"
  20. 2) "google.com"
  21. 3) "360.com"
 

5.哈希数据结构

hashes即哈希。哈希是从redis-2.0.0版本之后才有的数据结构。

hashes存的是字符串和字符串值之间的映射,比如一个用户要存储其全名、姓氏、年龄等等,就很适合使用哈希。

 
  1. //建立哈希,并赋值
  2. 127.0.0.1:6379> HMSET user:001 username antirez password P1pp0 age 34
  3. OK
  4. //列出哈希的内容
  5. 127.0.0.1:6379> HGETALL user:001
  6. 1) "username"
  7. 2) "antirez"
  8. 3) "password"
  9. 4) "P1pp0"
  10. 5) "age"
  11. 6) "34"
  12. //更改哈希中的某一个值
  13. 127.0.0.1:6379> HSET user:001 password 12345
  14. (integer) 0
  15. //再次列出哈希的内容
  16. 127.0.0.1:6379> HGETALL user:001
  17. 1) "username"
  18. 2) "antirez"
  19. 3) "password"
  20. 4) "12345"
  21. 5) "age"
  22. 6) "34"
 

redis安全

redis-sentinel实战

redis主从同步

1.安装好master、slave两个节点的redis

2.检查master配置文件

  1. #查看配置文件有用信息行
  2. egrep -v '#|^$' /etc/redis.conf
  3. #主要修改的几行
  4. bind 192.168.119.10 #填写本机ip地址
  5. daemonize yes #设置后台进程方式运行

3.检查设置slave配置文件

  1. bind 192.168.119.11
  2. daemonize yes
  3. slaveof 192.168.119.10 6379 #填写master的ip端口

4.在master、slave皆启动redis服务,指定配置文件

  1. redis-server /etc/redis.conf

5.在master上设置key,去slave上检查数据,完成简单的主从复制配置

在使用云服务器时,安装的redis3.0+版本都关闭了protected-mode,因而都遭遇了挖矿病毒的攻击,使得服务器99%的占用率!!

因此我们在使用redis时候,最好更改默认端口,并且使用redis密码登录。

redis.conf设置

  1. protected-mode yes #打开保护模式
  2. port 6380 #更改默认启动端口
  3. requirepass xxxxxx #设置redis启动密码,xxxx是自定义的密码

启动redis服务端

  1. redis-server /opt/redis-4.0.10/redis.conf & #指定配置文件启动redis,且后台启动

使用密码登录redis,使用6380端口

方法1,使用这个

  1. [root@oldboy_python ~ 09:48:41]#redis-cli -p 6380
  2. 127.0.0.1:6380> auth xxxx
  3. OK

方法2,此方案不安全,容易暴露密码

  1. [root@oldboy_python ~ 09:49:46]#redis-cli -p 6380 -a xxxx
  2. Warning: Using a password with '-a' option on the command line interface may not be safe.
  3. 127.0.0.1:6380> ping
  4. PONG

补充

检查redis是否设置了密码

127.0.0.1:6380> CONFIG get requirepass
1) "requirepass"
2) "xxxxxx"

如果没有,也可以给redis设置密码(命令方式)

  1. CONFIG set requirepass "xxxxxx"

因此你的redis就不容易被黑客入侵了。

redis安装与安全设置的更多相关文章

  1. linux redis 安装和密码设置

    1.下载redis wget http://download.redis.io/releases/redis-4.0.8.tar.gz 2.解压 tar xzvf redis-4.0.8.tar.gz ...

  2. CenterOS中安装Redis及开机启动设置

    Redis安装 从官方下载最新Redis进行安装,官网地址:http://redis.io/download $ wget http://download.redis.io/releases/redi ...

  3. win上安装Redis并将其设置为服务

    win上安装Redis并将其设置为服务 redis下载地址:https://redis.io/ 或者在下面的地址下载 https://github.com/zhangxy1035/redisDownl ...

  4. 在Linux环境安装redis步骤,且设置开机自动启动redis

    最近在linux环境安装了redis学习,目前已经安装成功且设置开机即启动状态,我把步骤流程记录了下来,分享给需要的小伙伴. 1.我在/usr/local/localsoftware/目录下创建了一个 ...

  5. Redis安装及实现session共享

    一.Redis介绍 1.redis是key-value的存储系统,属于非关系型数据库 2.特点:支持数据持久化,可以让数据在内存中保存到磁盘里(memcached:数据存在内存里,如果服务重启,数据会 ...

  6. CentOS7— Redis安装(转和延续)

    Part I. Redis安装(转载部分) 一.安装 wget http://download.redis.io/redis-stable.tar.gz tar xvzf redis-stable.t ...

  7. CentOS 6.6下Redis安装配置记录

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/120.html?1455855209 在先前的文章中介绍过redis,以下 ...

  8. Redis安装配置与Jedis访问数据库

    一.NOSQL概要 NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库.NoSQL数据库的四大分类 键值(Key-Value)存储数据库 这一类数据 ...

  9. Redis总结(一)Redis安装

    最近项目中需要使用Redis,刚好这两天有时间,便总结记录一下Redis的安装,以及如何在.NET中使用Redis. Redis是一个用的比较广泛的Key/Value的内存数据库.目前新浪微博.Git ...

随机推荐

  1. csu 1552: Friends 二分图 + Miller_Rabin

    http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1552 把那n个数写两次,分成相同的两堆,判断相加是质数的,连一条边,然后找最大匹配,ans = ...

  2. 牛客网Java刷题知识点之线程的几种可用状态(新建、可运行、运行、阻塞、死亡)

    不多说,直接上干货! https://www.nowcoder.com/ta/review-java/review?query=&asc=true&order=&page=13 ...

  3. java emoji表情存储解决方案

    1.问题产生情况 我遇到这个问题是做微信开发的时候有些有用的头像用了微信的emoji表情,然而我的mysql数据库用的编码是utf8_general_ci,就是utf-8编码,结果也就报错误了. 2. ...

  4. JQueryUI基础知识学习

    JQueryUI官网 http://jqueryui.com/ 菜鸟教程 http://www.runoob.com/jqueryui/jqueryui-tutorial.html

  5. AJPFX关于VIM的常用快捷键

    Ajax技术的核心是XMLHttpRequest对象(简称XHR),var xhr = new XMLHttpRequest();function createXHR(){if (typeof XML ...

  6. python第一模块基础语法

    一·python和各大高级语言的优缺点比较 1.c语言开发效率低 2.c++开发效率高于c语言,低于java,python. 3.java代码臃肿,设计复杂,库繁杂量多. 4.PHP应用领域单一,且运 ...

  7. powershell 根据错误GUID查寻错误详情

    使用azurepowershell 部署模板时,碰到了下面类似的问题: The template deployment 'ExampleDeployment-' is not valid accord ...

  8. 使用 Visual Studio 2017 部署 Azure 应用服务的 Web 应用

    本快速入门介绍了如何使用 Visual Studio 2017 创建并部署 Azure Web 应用.在本教程中完成的所有操作均符合1元试用条件. 本快速入门介绍了如何使用 Visual Studio ...

  9. HDU 4276 The Ghost Blows Light (树形DP,变形)

    题意:给定一棵n个节点的树,起点是1,终点是n,每经过一条边需要消耗Ti天,每个点上有一定量的珠宝,要求必须在t天内到达终点才可以将珠宝带出去,问至多能带多少珠宝? 思路: 注意Ti可以为0,而且有可 ...

  10. UVA10917 A walk trough the Forest (最短路,dp)

    求出家到其他点的最短路径,题目的条件变成了u->v不是回头路等价于d[u]>d[v]. 然后根据这个条件建DAG图,跑dp统计方案数,dp[u] = sum(dp[v]). #includ ...