2019独角兽企业重金招聘Python工程师标准>>>

redis 安装

在centos 上很简单

yum install redis

即可完成redis的安装

安装redis

cd /usr/local/redis/src
make && make install

安装redis3.2.8

1.tar -zxvf redis-3.2.8.tar -C /usr/local/
2.cd redis-3.28/src
3.make && make install
4.cp redis-server redis-trib.rb /usr/local/bin
5.mv redis.conf /etc/redis/

启动redis

方式一 service redis start方式二
redis-server /etc/redis/redis.conf

关闭服务

redis-cli -h localhost -p 8000 shutdown;

本地连接到远程redis命令:

redis-cli -h 192.168.66.88 -p 6379;分别是远程主机和端口

本地可能连接远程redis出现错误 connect refused 解决办法:

/etc/redis/redis.conf配置如下:

取消bind注释
将 bind 127.0.0.1改为
bind 0.0.0.0

redis配置密码

yum方式安装的redis配置文件通常在/etc/redis.conf中,打开配置文件找到

#requirepass foobared  

去掉行前的注释,并修改密码为所需的密码,保存文件

requirepass myRedis

master配置了密码,slave如何配置

若master配置了密码则slave也要配置相应的密码参数否则无法进行正常复制的。
slave中配置文件内找到如下行,移除注释,修改密码即可

重启redis

sudo service redis restart;//重启redis服务

客户端通过密码访问redis

redis-cli -h 127.0.0.1 -p 6379 -a my_redis;//密码为my_redis

Redis 安全隐患

推荐参考文章 https://segmentfault.com/a/1190000007624311

redis命令介绍

redis官方命令:https://redis.io/commands

1.set hello "world";//key:hello,value是world
2.get hello;//println "world"
3.keys *;//list all keys in redis
4.keys *h*;//list all keys which contains 'h'
5.del hello;//delete the key "hello"
6.randomkey;//returns a random key from redis
7.exists hello;//判断key是否存在 返回1 表示key存在 返回0表示不存在
8.rename hello world;//给key重命名
9.type key;//返回key所存储的值的类型 返回值有以下内容:
none(key不存在)
string(字符串)
list(列表)
set(集合)
zset(有序集)
hash(哈希表)
10.sort key;//默认情况按照从小到大的顺序排序
flushdb;//删除当前数据库中的所有Key
flushall; //删除所有数据库中的key
11.dbsize;//查看key的个数
12.expire key 1000;//设置key的过期时间
13.ttl key;查询key剩余过期时间
14.persist key;//取消生存时间

Java操作redis常见使用操作

分别操作String,List,Set,HashMap,SortedSet等操作

package com.arch.redis;import com.arch.redis.constants.Constants;
import com.arch.redis.utils.RedisUtils;
import org.junit.Test;
import redis.clients.jedis.Jedis;import java.util.HashMap;
import java.util.List;
import java.util.Map;public class RedisOperationTest {private static Jedis jedis = null;static {jedis = RedisUtils.getConnection(Constants.REDIS_HOST, Constants.REDIS_PORT);}/*** redis操作字符串*/@Testpublic void testString() {jedis.set("name", "xiaobian");System.out.println(jedis.get("name"));jedis.append("name", " is my lover");//拼接System.out.println(jedis.get("name"));jedis.del("key");//删除keySystem.out.println(jedis.get("key"));jedis.mset("name", "chenxiaobian", "age", "23", "address", "shanghai");System.out.println(jedis.get("age"));jedis.incr("age");//进行加1操作System.out.println(jedis.get("age"));System.out.println(jedis.get("name") + "-" + jedis.get("age") + "-" + jedis.get("address"));}/*** redis操作map*/@Testpublic void testMap() {Map<String, String> map = new HashMap<String, String>();map.put("name", "xiaobian");map.put("age", "22");map.put("qq", "751652064");//存mapjedis.hmset("user", map);List<String> rsmap = jedis.hmget("user", "name", "age", "qq");System.out.println(rsmap);//删除map中的某个键值jedis.hdel("user", "age");System.out.println(jedis.hget("user", "age"));System.out.println(jedis.hlen("user"));//返回key为user的键中存放的值的个数System.out.println(jedis.exists("user"));System.out.println(jedis.hkeys("user"));//返回所有的keySystem.out.println(jedis.hvals("user"));//返回所有value}/*** redis操作list*/@Testpublic void testList() {jedis.del("fruit");System.out.println(jedis.lrange("fruit", 0, -1));jedis.lpush("fruit", "apple");jedis.lpush("fruit", "orange");jedis.lpush("fruit", "pear");System.out.println(jedis.lrange("fruit", 0, -1));jedis.rpush("fruit", "apple");System.out.println(jedis.lrange("fruit", 0, -1));}/*** 操作set*/@Testpublic void testSet() {jedis.sadd("users", "zhangsan");jedis.sadd("users", "wangwu");jedis.sadd("users", "lihong");//获取所有加入的valueSystem.out.println(jedis.smembers("users"));System.out.println(jedis.sismember("users", "zhangsan"));//随机返回users中元素valueSystem.out.println(jedis.srandmember("users"));//返回集合的元素个数System.out.println(jedis.scard("users"));}/*** redis排序*/@Testpublic void testSort(){jedis.del("nihao");jedis.rpush("nihao","1");jedis.rpush("nihao","6");jedis.rpush("nihao","3");System.out.println(jedis.lrange("nihao",0,-1));//排序System.out.println(jedis.sort("nihao"));System.out.println(jedis.lrange("nihao",0,-1));}
}

Redis&&Memcached

如果简单地比较Redis与Memcached的区别,大多数都会得到以下观点:

1 .Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

2 .Redis支持数据的备份,即master-slave模式的数据备份。

3 .Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。

4.Redis可以实现主从复制,实现故障恢复。

5.Redis的Sharding技术: 很容易将数据分布到多个Redis实例中

Redis集群环境搭建

官方文档 https://redis.io/topics/cluster-tutorial

参考(http://www.cnblogs.com/wuxl360/p/5920330.html)

可能会遇到的问题http://www.cnblogs.com/carryping/p/7447823.html

redis集群最少需要创建6个node,创建集群的命令为:

redis-trib.rb  create  --replicas  1  192.168.102.245:7000 192.168.102.245:7001  192.168.102.245:7002  192.168.102.246:7003  192.168.102.246:7004  192.168.102.246:7005

需要安装ruby 通过下面命令

yum -y install ruby ruby-devel rubygems rpm-build
gem install redis

连接方式可通过:

redis-cli -h 192.168.31.245 -c -p 7002  

加参数 -c 可连接到集群,因为上面 redis.conf 将 bind 改为了ip地址,所以 -h 参数不可以省略

关于redis在实际项目中使用的代码

业务层性能瓶颈里面使用redisProduct product = redisDao.get(productId);//访问redis查看是否存在该商品//没有该商品
if(product == null){//访问数据库查询product = productDao.queryById(productId);//数据库中没有该商品if(product == null){new ApplicationException("该产品不存在");}else{//将商品放入redisredisDao.put(product);}
}

Redis高级特性介绍

1.pipelining

导入大量数据到redis中,这种方式很慢,很增加性能开销

cat prod_data|redis-cli -h 106.15.38.134 -p 7000

redis提供了pipe方式

cat prod_data |redis-cli -h localhost -p 7000 --pipe

可能执行下面命令会出现下面这个错误

ERR unknown command 'ET'
ERR unknown command 'ET'
ERR unknown command 'ET'

导致这个问题的原因是redis-cli中只支持doc格式的换行符 \r\n ,如果你在Linux下、Mac下或者Windows下创建的文件,最好都转个码。没有转码的文件,执行会失败

执行转码命令

unix2dos test.txt 

如果提示

-bash: unix2dos: command not found

提示没有这个命令,就需要进行安装,执行下面命令进行安装

 yum install unix2dos -y

再进行转码

unix2dos test.txt 

最后执行数据导入

cat prod_data |redis-cli -h localhost -p 7000 --pipe

prod_data内容为:

SET  sjnq1705031737271628    0
SET sys11705031737271628    0
SET syvm1705031737271638    0
SET seuy1705031737271638    0
SET seuy1705031737271648    0
SET sbuk1705031737271648    0
SET snq81705031737271658    0
SET snq81705031737271668    0
SET s6qr1705031737271668    0
SET s1p51705031737271678    0
SET s1p51705031737271688    0
SET grbt1705031737271688    0
SET gl3l1705031737271698    0
SET gl3l1705031737271708    0
SET gras1705031737271708    0
SET grap1705031737271718    0
SET gt6t1705031737271718    0
SET gt7s1705031737271728    0
SET g6291705031737271728    0
SET g6st1705031737271738    0
SET gcy71705031737271738    0
SET gogl1705031737271748    0
SET gogo1705031737271758    0
SET gdlc1705031737271758    0
SET gp2p1705031737271768    0
SET g3p81705031737271778    0
SET g9yx1705031737271788    0
SET g9yx1705031737271798    0
SET gw2h1705031737271808    0
SET ganh1705031737271818    0
SET ga1p1705031737271828    0
SET gsun1705031737271828    0
SET gsnl1705031737271838    0
SET gylq1705031737271838    0
SET gp271705031737271848    0
SET 47v11705031737271848    0
SET 45nq1705031737271858    0
SET 45451705031737271868    0
SET 4lgn1705031737271868    0
SET 4lgn1705031737271878    0
SET 46xp1705031737271878    0
SET 4td21705031737271888    0
SET 4qst1705031737271898    0
SET 4qs51705031737271908    0
SET 4i2i1705031737271908    0
SET 4i241705031737271918    0
SET 46ja1705031737271918    0
SET 46f11705031737271928    0
SET 4w351705031737271928    0
SET 4w3t1705031737271938    0
SET 4a2a1705031737271938    0
SET 41p11705031737271948    0
SET 41p11705031737271958    0
SET 4hbt1705031737271968    0
SET 4h1p1705031737271978    0
SET 42wa1705031737271978    0
SET 4re91705031737271988    0
SET afvn1705031737271998    0
SET afvn1705031737272008    0
SET a9281705031737272008    0
SET a9281705031737272018    0
SET a28c1705031737272018    0
SET a2ki1705031737272028    0
SET autu1705031737272028    0
SET autu1705031737272038    0
SET ahv41705031737272038    0
SET ahv41705031737272048    0
SET airn1705031737272058    0
SET airn1705031737272068    0
SET avhi1705031737272068    0
SET a8kc1705031737272078    0
SET aikd1705031737272088    0
SET aikd1705031737272098    0

参考redis官网https://redis.io/topics/mass-insert

Redis学习参考文档

1.https://segmentfault.com/a/1190000006836530

2.http://www.voidcn.com/blog/boonya/article/p-4828879.html

转载于:https://my.oschina.net/chenxiaobian/blog/738407

redis常用命令及安全Redis集群环境搭建相关推荐

  1. 2W 字详解 Redis 6.0 集群环境搭建实践

    原文链接:https://www.cnblogs.com/hueyxu/p/13884800.html 本文是Redis集群学习的实践总结(基于Redis 6.0+),详细介绍逐步搭建Redis集群环 ...

  2. Redis集群环境搭建实践

    本文是Redis集群学习的实践总结(基于Redis 6.0+),详细介绍逐步搭建Redis集群环境的过程,并完成集群伸缩的实践. Redis集群简介 Redis集群(Redis Cluster) 是R ...

  3. 2W 字详解 Redis 集群环境搭建实践

    点击上方 "终端研发部"关注, 星标或置顶一起成长 本文是Redis集群学习的实践总结(基于Redis 6.0+),详细介绍逐步搭建Redis集群环境的过程,并完成集群伸缩的实践. ...

  4. 学习笔记之-Kubernetes(K8S)介绍,集群环境搭建,Pod详解,Pod控制器详解,Service详解,数据存储,安全认证,DashBoard

    笔记来源于观看黑马程序员Kubernetes(K8S)教程 第一章 kubernetes介绍 应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署 ...

  5. Nginx+Tomcat集群环境搭建

    Tomcat集群能带来什么? 提高服务的性能.并发能力.以及高可用性 提高项目架构的横向扩展能力 提高服务的性能 实际公司线上生产环境都会选择一台机器部署一个tomcat,多台机器完成集群,毕竟一台机 ...

  6. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(九)安装kafka_2.11-1.1.0

    如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...

  7. 大数据第一天 Hadoop01-入门集群环境搭建

    Hadoop01-入门&集群环境搭建 今日内容 ​ Hadoop的介绍 ​ 集群环境搭建准备工作 ​ Linux命令和Shell脚本增强 ​ 集群环境搭建 大数据概述 ​ 大数据: 就是对海量 ...

  8. 【Hadoop生态圈】1.Hadoop入门教程及集群环境搭建

    文章目录 1.简介 2.环境准备 3.安装hadoop 3.修改Hadoop配置文件 3.1.hadoop-env.sh配置 3.2.core-site.xml配置 3.3.hdfs-site.xml ...

  9. Spark集群环境搭建(standalone模式)

    Spark集群环境搭建(standalone模式) 1. 实验室名称: 2. 实验项目名称: 3. 实验学时: 4. 实验原理: 5. 实验目的: 6. 实验内容: 7. 实验器材(设备.虚拟机名称) ...

最新文章

  1. 在CentOS 6.6 64bit上为vim 7.4安装并配置vim-airline插件
  2. Android中图片的三级缓存策略
  3. 倒数秒跳转页面实现代码。
  4. 不用“背”单词,1个方法牢记7000单词:我是如何做到的?
  5. [CodeJam 2021 Round 3] Square Free(调整法 / 字典序最小解网络流)
  6. oracle sql语句 从指定条数查询
  7. 互联网晚报 | 2月22日 星期二 | 海底捞预告去年最高亏45亿元;奥迪一汽新能源汽车项目启动;英雄互娱更名“英雄游戏”...
  8. Oracle宣布在云上正式上线 自治事务处理数据库
  9. python做collatz猜想_R中的Collatz猜想
  10. Python基础(五)
  11. python实现绘制信号序列语谱图
  12. easyui获取图片路径_Python玩转图片九宫格
  13. Firefox for iOS 终于登陆中国
  14. 嵌入式控制K60考试复习
  15. Linux-用户操作
  16. 网站服务器会把手机拉黑吗,怎么知道对方手机把我拉黑了
  17. 这10个免费学习网站,个个堪称神器,不收后悔!
  18. Fallback class must implement the interface annotated by @FeignClient
  19. %3c php 能用什么代替,Phpwind9
  20. 【读书笔记】金字塔原理-构建金字塔的逻辑顺序

热门文章

  1. 10年老电脑如何提速_2020年10月和双十一轻薄本/轻薄型笔记本电脑如何挑选?内含轻薄本/轻薄型笔记本电脑推荐!...
  2. python大文件排序_Python 大文件排序
  3. mysql同步一段时间后失败_mysql 主从同步失败后
  4. c语言中有无注释重要吗,求助!有什么问题没考虑到吗? (c语言,大部分注释都写啦)...
  5. mysql merge查询速度_MySQL 查询优化之 Index Merge
  6. 堆积柱形图显示总数_在Excel堆积柱形图中显示合计值
  7. mysql 视图调用存储过程,是否可以在视图中调用存储过程?
  8. python 3.8.5 打包_骚操作 | Python 实现在 App 端的人脸识别
  9. java 得到bean的属性_获取javaBean所有属性及类型.doc
  10. laravel database.php,php Laravel框架学习(一) 之 建立数据库并填充测试数据