1. 安装gcc环境
1.1 yum -y install gcc-c++
2. Redis安装
2.1 cp redis-5.0.7.tar.gz /usr/local
2.2 cd /usr/local
2.3 tar -zxvf redis-5.0.7.tar.gz
3. 编译redis源码(进入到Reids目录)
3.1 cd /usr/local/redis-5.0.7
3.2 make
4. 安装redis
4.1 make install PREFIX=/usr/local/redis5 -- 指定安装到某个路径下面
5. 启动redis
5.1 cd /usr/local/redis5/bin
5.2 ./redis-server
5.3 Ctrl+C 然后退出
6.开放端口6379
6.1 vim /usr/lib/firewalld/services/ssh.xml
<port protocol="tcp" port="6379"/>
7. 把redis.conf复制到redis5里面去
7.1 cd /usr/local/redis-5.0.7
7.2 cp ./redis.conf /usr/local/redis5/bin/
8. 开启守护后台
8.1 cd /usr/local/redis5/bin
8.2 vim redis.conf
:set number
这里弄的是redis低版本
8.3 改成daemonize yes (开启后台线程)
8.4 :wq (保存并退出)
这里弄的是redis高版本
8.3.1 改成daemonize yes (开启后台线程)
8.3.2 # bind 127.0.0.1 (redis的低版本默认没有设置仅限本机访问,而高版本有设置,所以需要将高版本的本机绑定注释掉)
8.3.3 requirepass root (安全加固-设置Redis的访问密码)
8.3.4 :noh (取消高亮)
8.4 :wq (保存并退出)
这里是改完redis.conf配置 的
8.5 ./redis-server redis.conf (后台启动redis)
8.6 ps -ef | grep redis
8.7 ./redis-cli (进入redis进行操作)
8.8 auth root (这里是有设置访问密码的才用)
这里是开启安全加固要弄的
9. redis的字符串(string)
set 值名 值
get 值名
keys *
mset 值名 值 值名 值
mget 值名 值名
flushdb (清空)
10. redis的哈希(hash)
hset 表名 值名 值
hget 表名 值名 值
hgetall 表名
hdel 表名 值名
11. redis的列表(List)
lpush 列名 值 值 值 (从左边加)
rpush 列名 值 值 值 (从右边加)
lrange 列名 0 -1 (查看列里的所有)
lpop 列名 (左弹)
rpop 列名 (右弹)
lrem 列名 个数 值 (根据列里面的值删除多少个数)
llen 列名 (查列表的长度)
lindex 列名 索引
lset 列名 索引 替换的值
11. redis的集合(set)
sadd 表名 值 值 值
scard 表名 (查长度)
smembers 表名 (查表名里的所有值)
sismember 表名 值名 (查看值在不在)
spop 表名
12. redis的有序集合(zset)
zadd 表名 数值 值
zrange 表名 0 -1 (查询表里的所有)
13. redis的事务
multi (开启事务)
exec (提交事务)
discard (事务回滚)
watch 表名 (监听某些键,当被监听的键在提交事务前被修改,则事务会回滚 (基于乐观锁机制))
unwatch (取消监听)
停止redis服务(这里只是说明,不是真的要停止服务)
./redis-cli (进去redis)
shutdown
java操作redis
1. 创建maven项目
1.1 导依赖
<dependencies>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
1.2 在Test层创建一个JedisTest类
import org.junit.Test;
import redis.clients.jedis.Jedis;
/**
* @Author: wenchaowen
* @Date: 2020/4/11 0011 16:06
* @Descripton:
*/
public class JedisTest {
@Test
public void testJedis(){
//1.连接Redis
Jedis jedis = new Jedis("101.37.175.1",6379);
jedis.auth("root");
//2.添加一个键值对
jedis.set("name","admin");
//3.获取
String name = jedis.get("name");
System.out.println("name = " + name);
jedis.close();
}
}
2. spring操作redis
2.1 创建Maven项目
2.2 导依赖
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.8.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.3.8.RELEASE</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
</dependencies>
2.3 创建一个spring config的beans.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--1.创建一个连接的对象-->
<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
<!-- 最大空闲数 -->
<property name="maxIdle" value="50" />
<!-- 最大连接数 -->
<property name="maxTotal" value="100" />
<!-- 最大等待时间 -->
<property name="maxWaitMillis" value="20000" />
</bean>
<!-- 2.配置redis连接工厂 -->
<bean id="connectionFactory"
class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<!-- 连接池配置 -->
<property name="poolConfig" ref="poolConfig" />
<!-- 连接主机 -->
<property name="hostName" value="101.37.175.1" />
<!-- 端口 -->
<property name="port" value="6379" />
<!-- 密码 -->
<property name="password" value="root" />
</bean>
<!-- 3.配置redis模板对象 -->
<bean class="org.springframework.data.redis.core.RedisTemplate">
<!-- 配置连接工厂 -->
<property name="connectionFactory" ref="connectionFactory" />
<property name="keySerializer" ref="stringRedisSerializer"></property>
<!-- 配置Redis key系列化方式为spring
<property name="valueSerializer" ref="stringRedisSerializer"></property>
-->
</bean>
<bean id="stringRedisSerializer" class="org.springframework.data.redis.serializer.StringRedisSerializer"></bean>
</beans>
2.4 创建User类
package com.qf.entity;
import lombok.Data;
import java.io.Serializable;
/**
* @Author: wenchaowen
* @Date: 2020/4/11 0011 19:45
* @Descripton:
*/
@Data
public class User implements Serializable {
private static final long serialVersionUID = 4821987350346984317L;
private Integer id ;
private String username;
}
2.5 在test层创建SpringRedisTest类
import com.qf.entity.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
* @Author: wenchaowen
* @Date: 2020/4/11 0011 17:44
* @Descripton:
*/
@RunWith(value = SpringJUnit4ClassRunner.class)
@ContextConfiguration(value = "classpath:beans.xml")
public class SpringRedisTest {
@Autowired
private RedisTemplate redisTemplate;
/**
* 演示字符串的操作
*/
@Test
public void testString(){
//key和value采用字符串的序列化方式
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new StringRedisSerializer());
//ValueOperations : 操作字符串的
//ValueOperations : 默认使用的是JDK的序列化方式
ValueOperations valueOperations = redisTemplate.opsForValue();
//设置键值对
valueOperations.set("name","qfAdmin"); //进去序列化
valueOperations.set("username","张三");
//根据key获取value值
Object name = valueOperations.get("name"); //查询反序列
Object username = valueOperations.get("username");
System.out.println("name = " + name);
System.out.println("username = " + username);
}
@Test
public void testAddUser(){
ValueOperations valueOperations = redisTemplate.opsForValue();
//1.创建一个对象
User user = new User();
user.setId(10);
user.setUsername("qfAdmin");
//2.添加到redis中
valueOperations.set("user",user);
//3.获取
User user1 = (User) valueOperations.get("user");
System.out.println("user1 = " + user1.getUsername());
}
}