redis的认识、安装、使用

一、认识

(1)Redis是一个开源的使用C语言编写、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
(2)Redis的数据类型5种:

类型 说明 常用相关命令
字符串(string) key-value,key是区分大小写的 get查、set增、incr把值加1、Desc把值减1
哈希表(hashs) key-fields-values Hset增、Hget查、Hdel删
列表(lists) 有顺序,可重复 Lpush增入头部、rpush增入尾部、Lrange查、Lpop删第一个、rpop删最后一个
集合(sets) 无顺序,不可重复 sadd增、smembers查、srem删
有序集合(sorts sets) 有顺序,不可重复 zadd增、zrange正序查、zreverange反序查、zrem删、

(3)做缓存的时候用的最多的是string,这个是种key-value的形式
其次是hashs,相当于key-的形式,不过value还可以继续key-value的形式。hashs可以把内容归类。
(4)注意点:Redis是单线程的,redis把所有的数据放到内存里,内存是比较小的,内存满了就去找虚拟内存,也就是硬盘,这样子就会频繁内存与硬盘交换数据,性能降低,所以不适合保存内容大的数据,是主要用于解决高并发的数据库,Redis里面存的都是字符串。
(5)redis常用命令:

127.0.0.1:6379> set strone 123one          //设置一个字符串strone
OK
127.0.0.1:6379> get strone          //查看字符串strone
"123one"
127.0.0.1:6379> hset hashone fieldone abcone     //设置一个哈希表的key为hashone,域叫fieldone
(integer) 1
127.0.0.1:6379> hget hashone fieldone    //查看hashone表里面的域fieldone
"abcone"
127.0.0.1:6379> keys *       //查看现在有几个key
1) "hashone"
2)“strone”
//下面是关于KEY命令的,也很重要
127.0.0.1:6379> ttl strone        //查看key strone的有效期
(integer) -1             //-1:key永久保存,-2:key不存在,正数:正在倒计时过期
127.0.0.1:6379> expire strone 100    //设置key strone的有效期为100秒
(integer) 1
127.0.0.1:6379> ttl strone     //过了10秒后查看keystrone的有效期
(integer) 90        // keystrone的有效期只剩下90秒
127.0.0.1:6379> ttl strone    //过了100秒后查看key  strone的有效期
(integer) -2        //不存在叫做strone的key

(6)redis的持久化方案
一种是rdb(快照形式):默认方式,定期把内存中当前时刻的数据保存到磁盘,性能比较好。
一种是aof(append only file):把对redis数据库操作的命令,保存到文件中。数据库恢复时把所有命令执行一遍即可,数据完整性比较高。
△两种持久化方案可以同时开启,使用aof文件来恢复数据库
(7)缓存里面东西越用越多了怎么办?
这时候就需要集群了,也就是多开几个redis服务器,参考我的另外一文档:
redis集群的认识、搭建、使用--------https://blog.csdn.net/ranandrun/article/details/83054460

二、安装和启动redis

(1)redis需要c语言的编译环境。需要安装gcc
查看是否有安装gcc:
在这里插入图片描述
这样子就是已经安装了
如果是command not fonud,就是还没安装,安装方法:
yum install gcc-c++
(2)下载redis-3.0.0.tar.gz到usr/redis/redis-install下面
解压:tar zxf redis-3.0.0.tar.gz

[root@localhost redis-3.0.0]# ll
total 144
-rw-rw-r--.  1 root root 25890 Apr  1  2015 00-RELEASENOTES
-rw-rw-r--.  1 root root    53 Apr  1  2015 BUGS
-rw-rw-r--.  1 root root  1439 Apr  1  2015 CONTRIBUTING
-rw-rw-r--.  1 root root  1487 Apr  1  2015 COPYING
drwxrwxr-x.  6 root root  4096 Apr  1  2015 deps
-rw-rw-r--.  1 root root    11 Apr  1  2015 INSTALL
-rw-rw-r--.  1 root root   151 Apr  1  2015 Makefile  //c语言编译必须有makefile文件
-rw-rw-r--.  1 root root  4223 Apr  1  2015 MANIFESTO
-rw-rw-r--.  1 root root  5201 Apr  1  2015 README
-rw-rw-r--.  1 root root 41403 Apr  1  2015 redis.conf
-rwxrwxr-x.  1 root root   271 Apr  1  2015 runtest
-rwxrwxr-x.  1 root root   280 Apr  1  2015 runtest-cluster
-rwxrwxr-x.  1 root root   281 Apr  1  2015 runtest-sentinel
-rw-rw-r--.  1 root root  7109 Apr  1  2015 sentinel.conf
drwxrwxr-x.  2 root root  4096 Apr  1  2015 src    //全部c语言的源代码
drwxrwxr-x. 10 root root  4096 Apr  1  2015 tests
drwxrwxr-x.  5 root root  4096 Apr  1  2015 utils

然后命令行里面输入make,就开始编译了
编译完之后会生成redis-server和redis-cli等几个文件
然后开始正式开始安装redis:

[root@localhost redis-3.0.0]# make install PREFIX=/usr/redis/redis

安装完毕
(3)启动redis-server
在bin目录下输入命令:

./redis-server

在这里插入图片描述
这种是前端启动模式,这种前端启动模式会占用一个终端。
一般推荐用后端启动模式,方法如下:
在安装文件里面复制一份redis.conf到redis的bin目录下

[root@localhost redis-3.0.0]# cd /usr/redis/redis/bin
[root@localhost bin]# cp /usr/redis/redis-install/redis-3.0.0/redis.conf .

编辑redis.conf,把GERERAL里面的daemonize no 改为daemonize yes,这个就是daemonize 就是后台运行的意思
在这里插入图片描述
然后启动redis

[root@localhost bin]# ./redis-server redis.conf

查看是否启动成功:用进程查看

[root@localhost bin]# ps aux|grep redis

看到这两个,就是成功,它的端口号为6379
在这里插入图片描述

三、开启redis-server后如何去使用

(1)连接 本地虚拟机开启的redis-server

[root@localhost bin]# ./redis-cli
127.0.0.1:6379> ping
PONG

这样子就是连上了本地虚拟机的redis-server
(2)连接别的机子的虚拟机的redis-server

[root@localhost bin]# ./redis-cli -h 192.168.25.129 -p 6379
192.168.25.129:6379> ping
PONG

这样子就是连上了别的机子的虚拟机的redis-server,主要改下ip地址和端口号就可以了

(3)我们最主要掌握的还是用java的客户端Jedis去连接redis-server
<1> 导入包

		<!-- Redis客户端 -->
		<dependency>
			<groupId>redis.clients</groupId>
			<artifactId>jedis</artifactId>
		</dependency>

<2>创建一个测试类,测试一下:

public class TestJedis {

	@Test
	public void testJedis() throws Exception {
		//创建一个jedis对象,需要指定服务的ip和端口号
		Jedis jedis = new Jedis("192.168.25.129", 6379);
		//直接操作数据库
		jedis.set("jedis-key-test", "1234");
		String result = jedis.get("jedis-key-test");
		System.out.println(result);
		//关闭jedis
		jedis.close();
	}
}

这种方法不太好,每次操作redis都得创建一个连接,这样子比较浪费资源,所以建议创建一个连接池,方法如下:

@Test
	public void testJedisPool() throws Exception {
		//创建一个数据库连接池对象(单例),需要指定服务的ip和端口号
		//数据库连接池对象是单例的,就是说整个系统只有一个
		JedisPool jedisPool = new JedisPool("192.168.25.129", 6379);
		//从连接池中获得连接
		Jedis jedis = jedisPool.getResource();
		//使用Jedis操作数据库
		//这里的Jedis操作是方法级别的,就是说在一个方法里面用,同时在这方法里面关闭
		String result = jedis.get("jedis-key-test");
		System.out.println(result);
		//一定要关闭Jedis连接
		jedis.close();
		//系统关闭前关闭连接池
		jedisPool.close();
	}

猜你喜欢

转载自blog.csdn.net/ranandrun/article/details/83045989