Day47笔记Linux+redis入门
Day47 知识讲解:Jedis
1、Linux上jdk,mysql,tomcat安装(看着文档安装)
准备工作:
因为JDK,TOMCAT,MYSQL的安装过程中需要从网上下载部分支持包才可以继续,所以要求同学们提前安装下载好依赖
yum install glibc.i686
yum -y install libaio.so.1 libgcc_s.so.1 libstdc++.so.6
yum updatelibstdc++-4.4.7-4.el6.x86_64
yum install gcc-c++
glibc.i686 |
8MB+21MB |
libaio.so.1 libgcc_s.so.1 libstdc++.so.6 |
417KB |
libstdc++-4.4.7-4.el6.x86_64 |
仅更新检查, 无下载内容 |
yum install gcc-c++ |
19MB |
Linux操作系统有两大程序命令:
rpm相当于windows的添加\卸载程序。只能操作Linux本地的程序。
卸载:rpm -e--nodeps需要卸载程序名
查看:rpm -qa
安装包的安装:rpm -ivh需要安装的程序名
安装包:*.rpm------相当于windows *.exe
有些程序,存在于网络上
yum相当于联网版的rpm命令。从网络上进行程序的安装、更新
网络安装:yum install xxxxx
下载到Linux本地变为rpm程序包,执行rpm安装
网络更新:yum updatexxxxx
下载到Linux本地然后再进行更新操作
Linux系统上安装JDK:
安装步骤:
卸载OpenJDK
执行命令查看:
l rpm –qa | grep java
l 卸载OPENJDK
rpm -e --nodepsjava-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.i686
rpm -e --nodepsjava-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.i686
创建JDK的安装路径:
在/usr/local/创建文件夹java目录
mkdir -p /usr/local/java
上传安装文件到linux:
l cd ~
l ll
解压tar.gz
首先需要安装依赖:【1~5分钟】
l yum install glibc.i686
l tar -zxvf jdk-7u71-linux-i586.tar.gz -C /usr/local/java
配置环境变量:
vim /etc/profile
#set java environment
JAVA_HOME=/usr/local/java/jdk1.7.0_71
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
重新加载配置文件:【否则环境变量不会重新执行】
source /etc/profile
Linux系统上安装MySQL:
安装MySQL:
- mysql安装:初始化本地登录密码
- 开放防火墙3306端口
- 赋予root用户远程登录权限,设置远程登录密码
卸载自带mysql:
查询mysql的安装情况
rpm -qa | grep mysql –-color
卸载原生的MySQL
rpm -e –nodeps mysql-libs-5.1.71-1.el6.i686
上传mysql到Linux:
安装依赖:
yum -y install libaio.so.1 libgcc_s.so.1 libstdc++.so.6
yum updatelibstdc++-4.4.7-4.el6.x86_64
安装mysql的服务端:
安装服务端
rpm -ivh MySQL-server-5.5.49-1.linux2.6.i386.rpm
安装mysql的客户端:
rpm -ivh MySQL-client-5.5.49-1.linux2.6.i386.rpm
启动mysql的服务:
启动MySQL服务
service mysql start
设置mysql初始密码并登陆MySQL:(本地登录密码)
/usr/bin/mysqladmin -u root password '123456'
设置开机自动启动mysql:
加入到系统服务:
chkconfig --add mysql
自动启动:
chkconfigmysql on
开启远程服务,并且设置远程登录密码
登录mysql:
//赋予root用户所有权限,远程登录密码是123456
grant all privileges on *.* to 'root' @'%' identified by '123456';
flush privileges;
设置Linux的防火墙:
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
/etc/rc.d/init.d/iptables save
Linux系统上安装tomcat:
安装tomcat:
上传tomcat的安装文件:
创建tomcat的安装路径:
mkdir -p /usr/local/tomcat
解压tomcat
tar -zxvf apache-tomcat-7.0.57.tar.gz -C /usr/local/tomcat
设置防火墙:
开放8080端口
/sbin/iptables -I INPUT -p tcp --dport8080 -j ACCEPT
保存配置
/etc/rc.d/init.d/iptables save
启动tomcat:
启动tomcat
执行/usr/local/tomcat/apache-tomcat-7.0.57/bin/startup.sh
关闭tomcat
执行/usr/local/tomcat/apache-tomcat-7.0.57/bin/shutdown.sh
2、redis简述及安装(看着文档安装)
SQL:重型坦克
MySQL/oracle:关系型数据库。数据和数据之间/表和表之间存在关系。
人员表-----身份证表中的数据一对一
分类表---商品表中的数据一对多
人员表---权限表中的数据多对多
优点:①表设计/数据的使用和现实生活息息相关
②表数据的增删改查操作比较简单
③保证数据的完整/安全
缺点:①占用大量的内存资源(伪表、关系算法)
②执行效率不高
③对海量数据/高并发请求无能为力
④海量数据时,表结构的维护无法进行。
目前移动互联网时代-----》物联网时代
信息量-------MB-GB
只有底盘高速跑车
非关系型数据库:NOSQL (不仅仅是SQL)
特点:去掉了数据和数据之间关系。
Redis 2009年。
一秒钟可以轻松读写十几万数据量
优点:①轻松处理海量数据/高并发请求
②无论数据量多少,都可以对数据库进行维护
③执行效率远远高于关系型数据库
缺点:①数据和数据之间不存在关系,和现实生活严重脱节
②数据不再有完整性和安全性
关系型数据库和非关系型数据库不是相互替代的关系。
重要数据:关系型数据库(钱)
不重要海量数据(高并发请求):非关系型数据库
redis安装:
redis是C语言开发,安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境。如果没有gcc环境,需要安装gcc:
yum install gcc-c++
如果提示是否下载,输入y。
如果提示是否安装,输入y
l 步骤1:将Windows下下载的压缩文件上传到Linux下。通过secureCRT进行上传,步骤如下:
l alt + p
l put F:/redis-3.0.0.tar.gz
l
l 步骤2: 解压文件
l tar –zxvf redis-3.0.0.tar.gz
l 步骤3: 编译redis (编译,将.c文件编译为.o文件)
l 进入解压文件夹,cd redis-3.0.0
l 执行make
1)如果没有安装gcc,编译将出现错误提示。(如果安装失败,必须删除文件夹,重写解压)
2)安装成功
l 步骤4: 安装
将redis安装到指定目录中/usr/local/redis。
PREFIX必须是大写
make PREFIX=/usr/local/redis install
l
安装完后,在/usr/local/redis/bin下有几个可执行文件
redis-benchmark ----性能测试工具
redis-check-aof ----AOF文件修复工具
redis-check-dump ----RDB文件检查工具(快照持久化文件)
redis-cli ----命令行客户端
redis-server ----redis服务器启动命令
l 步骤5: copy文件
redis启动需要一个配置文件,可以修改端口号等信息。
Cp redis.conf /usr/local/redis
注:如果没有配置文件redis也可以启动,不过将启用默认配置,
这样不方便我们修改端口号等信息,无法进行后期集群的配置
无论前、后端启动,都要先进入redis程序的根目录:/usr/local/redis
前端启动:(了解)-无法部署集群
启动redis,客户端连接:连接6379端口
redis-cli -h ip地址 -p 端口
./bin/redis-cli -p 6379
./bin/redis-cli 开启客户端 可以操作redis
客户端/服务器端关闭:ctrl+c
Redis启动-后端模式
l 修改redis.conf配置文件,daemonize yes 以后端模式启动。
vim /usr/local/redis/redis.conf
l 启动时,指定配置文件
cd /usr/local/redis/
./bin/redis-server ./redis.conf
l Redis默认端口6379,通过当前服务进行查看
ps-ef | grep –I redis
后端模式可以修改端口号,默认6379. 6379,6380,6381
Redis服务器的关闭:
① 查询到PID,kill -9 pid【断电,非正常关闭,一般不用,否则造成数据丢失】
②正常关闭【正常关闭,数据保存】
./bin/redis-cli shutdown
3、redis数据类型【重点】
Redis数据库----非关系型数据库----存储方式(key----value)
Redis数据库-----HashMap<String,Object>
Value的数据类型:
1、 字符串类型对应Java中的String。 512MB
存储大量文本信息,作为项目的缓存使用。
2、 散列类型(了解)相当于Java中的JavaBean,Map
几乎可以被String+json替代
3、 列表类型相当于Java中LinkedList(链表)。
数据增删效率极高。
用户列表,VIP列表
4、 集合类型相当于Java中的set集合
set<String>
无序、唯一。
VIP列表,交集、并集、差集运算
5、 有序集合类型。有序的set集合。做排行榜
4、redis命令-String命令【重点】
字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型存入和获取的数据相同。在Redis中字符串类型的Value最多可以容纳的数据长度是512M。
MySQL:
Redis:
数据增删改查:
赋值:增改
取值:查
删值:删
l 赋值:
set key value:设定key持有指定的字符串value,如果该key存在则进行覆盖操作。总是返回”OK”
append key value:拼凑字符串。如果该key存在,则在原有的value后追加该值;如果该key不存在,则重新创建一个key/value
以上两种方法的区别:
在key—value存在时。Set覆盖,append末尾的追加
l 取值:
get key:获取key的value。如果与该key关联的value不是String类型,redis将返回错误信息,因为get命令只能用于获取String value;如果该key不存在,返回(nil)。 nil就是Java中的null
l 删除:
del key :删除指定key.【通用】返回int类型,删除了几条数据
keys *查询存储的所有键值对---键名(不论值类型)
5、redis命令-hash(了解)
使用环境:向某个value中保存一个大量数据的map集合,占用极少的空间。
l hmset key field value [field2 value2 …]:设置key中的多个filed/value
l hgetall key:获取key中的所有filed-vaule
l hmget key fileds:获取key中的多个filed的值
6、Jedis(java操作redis数据库技术)【明日重点】
Mysql由JDBC 进行连接JAVA。
Jedis------使用Java操作redis数据库。
Redis不仅是使用命令来操作,现在基本上主流的语言都有客户端支持,比如java、C、C#、C++、php、Node.js、Go等。
在官方网站里列一些Java的客户端,有Jedis、Redisson、Jredis、JDBC-Redis、等其中官方推荐使用Jedis和Redisson。在企业中用的最多的就是Jedis,下面我们就重点学习下Jedis。
导入jar包
Jedis使用特点:redis中有什么命令,Jedis中就有什么方法对应。
Redis的命令名,Jedis的方法名
外界使用Redis,必须开放6379
开放6379端口
/sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT
保存配置
/etc/rc.d/init.d/iptables save
Jedis的单实例:
Jedis池:
Jedis工具: