Redis的安装与使用

一、安装

(1)、安装gcc(redis是由C语言编写的,所以安装gcc来编译)

[root@localhost ~]# yum install gcc-c++

(2)、wget方式下载redis安装包并解压(wget如不能使用,就先下载:yum -y install wget)

[root@localhost ~]# wget http://download.redis.io/releases/redis-3.2.10.tar.gz
[root@localhost ~]# tar -zxvf redis-3.2.10.tar.gz

(3)、输入 ll 查看一下


(4)、进入目录进行编译并且安装到/usr/local/redis目录下

[root@localhost ~]# cd redis-3.2.10
[root@localhost redis-3.2.10]# make
[root@localhost redis-3.2.10]# make PREFIX=/usr/local/redis install

(5)、将redis.conf配置文件复制到redis目录下


[root@localhost redis-3.2.10]# cp redis.conf /usr/local/redis/

(6)、测试一下是否启动成功,出现如下图标代表成功启动

[root@localhost redis-3.2.10]# cd /usr/local/redis/
[root@localhost redis]# bin/redis-server


(7)、这种启动是前端启动,程序退出就终止了,所以必须改为后端运行;按Ctrl + C,退出当前启动程序,使用vi打开redis.conf文件,找到daemonize,按i,把no改为yes,按Esc键退出,输入 :wq 保存

[root@localhost ~]# vi /usr/local/redis/redis.conf

(8)、此时进入redis目录,加载配置文件启动后端服务

[root@localhost ~]# cd /usr/local/redis/
[root@localhost redis]# ./bin/redis-server ./redis.conf 

(9)、查询是否启动成功(6379:端口号)

[root@localhost redis]# ps -ef | grep -i redis


(10)、关闭服务

[root@localhost redis]# ./bin/redis-cli shutdown
[root@localhost redis]# ps -ef | grep -i redis

二、使用

(1)、在Maven中下载jar包

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>
(2)、通过Jedis连接池来使用Redis
package com.demo.test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.Transaction;

public class JedisPoolTest {
	
	public static void main(String[] args) {
		JedisPoolConfig config =new JedisPoolConfig();
		config.setMaxTotal(100);		//最大连接数
		config.setMaxIdle(10);			//最大空闲连接数
		
		JedisPool jedisPool =new JedisPool(config,"****",6379);	//参数二:linux上的主机名;参数三:linux上的端口号
		Jedis jedis =null;
		try {
			jedis = jedisPool.getResource();
			//jedis.auth("123456");								//密码
			
//支持string操作
			/*jedis.set("name", "甲123...");							//存储数据
			jedis.append("name", "追加456...");						//追加
			jedis.mset("age","1","addr","海南");						//存储多个字符
			
			System.out.println("value:"+jedis.get("name"));
			System.out.println(jedis.mget("name","age","addr"));*/
			
//支持hash操作
			/*Map<String,String> map = new HashMap<String,String>();
	                map.put("name", "乙123...");
	                map.put("age", "2");
	        
	                jedis.hmset("user", map);				//存储数据
	        
	                System.out.println( jedis.hmget("user", "name","age") );//读取数据  返回一个列表类型 
	                System.out.println( jedis.hkeys("user") );		//获取所有哈希表中的字段,返回一个列表
	                System.out.println( jedis.hvals("user") );		//获取哈希表中所有值
	                System.out.println( jedis.hlen("user") );		//获取哈希表中字段的数量
	                Iterator<String> iter = jedis.hkeys("user").iterator();	//获取所有的键  迭代操作
	                while(iter.hasNext()) {
	                    String key = iter.next();
	                    System.out.println( key+"--"+jedis.hmget("user", key) );
	                }*/
			
//支持list操作
	                /*jedis.del("Programming language");			//开始前,先移除所有的内容  

	                jedis.lpush("Programming language", "Java");		//将一个或多个值插入到列表头部
	                jedis.lpush("Programming language", "Python");
	                jedis.lpush("Programming language", "C++");
	        
	                //获取数据  返回一个list(参数1:key,参数2:显示的起始位置,参数3:显示的结束位置)
	                //其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
	                System.out.println( jedis.lrange("Programming language",  0, -1) );
	                //将一个值插入到已存在的列表头部
	                jedis.lpushx("Programming language", "php");
	                System.out.println( jedis.lrange("Programming language",  0, -1) );
	                //在列表中添加一个或多个值
	                jedis.rpush("Programming language", "C");
	                System.out.println( jedis.lrange("Programming language",  0, -1) );*/
		
//支持set(无序)操作
	                /*jedis.sadd("webSite", "阿里巴巴","网易");		//向集合添加一个或多个成员
	                jedis.sadd("webSite", "腾讯");
	        
	                System.out.println( jedis.scard("webSite") );		//获取集合的成员数
	                System.out.println( jedis.smembers("webSite") );	//返回集合中的所有成员  返回类型列表,注意顺序不唯一
	                System.out.println(jedis.sscan("webSite", "0") );	//迭代集合中的元素*/	  
			
//支持set(有序)操作
	                /*//Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
	                //不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
	                //有序集合的成员是唯一的,但分数(score)却可以重复。
	                jedis.zadd("city", 0, "北京");
	                jedis.zadd("city", 1, "上海");
	                jedis.zadd("city", 2, "杭州");

	                System.out.println( jedis.zcard("city") );		       //获取有序集合的成员数
	                System.out.println( jedis.zrevrangeByScore("city", 5, 0) );    //返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序*/
	        
//支持事务操作
			Transaction transaction = jedis.multi();	//标记一个事务块的开始
			transaction.set("name", "甲");
			//int a = 6 / 0; 												//抛出异常(java中不可以除以0)
			//transaction.append("name", "追加456...");
			transaction.exec();  											//执行所有事务块内的命令
			System.out.println(jedis.get("name")); 
			
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			if(jedis != null){
				jedis.close();
			}
			if(jedisPool != null){
				jedisPool.close();
			}
		}
	}
}

注:

(1)、运行时如果出现连接超时的报错,那是因为6379端口没有权限,先输入firewall命令配置下防火墙,再进入redis.conf配置文件,按 i ,在bind 127.0.0.1前加入一个 # 进行注销,按Esc键退出,输入 :wq 保存

[root@localhost ~]# firewall-cmd --zone=public --add-port=6379/tcp --permanent
[root@localhost ~]# firewall-cmd --reload
[root@localhost ~]# cd /usr/local/redis/
[root@localhost redis]#vi /usr/local/redis/redis.conf


(2)、运行时如果出现如下错误,那是因为远程连接redis时,redis启动自我保护,拒绝访问;设置密码,通过密码访问就行了

[root@localhost ~]# cd /usr/local/redis/
[root@localhost redis]# ./bin/redis-cli
127.0.0.1:6379> config set requirepass 123456
127.0.0.1:6379> quit
[root@localhost redis]# ./bin/redis-cli
127.0.0.1:6379> auth 123456
OK
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值