一 redis 服务器命令
cd /usr/local/src/redis
1.启动redis
redis-server redis.conf
2.进入客户端
redis-cli -p 6379
3.查看主从信息
info replication
4.关闭redis
方法1: redis-cli -p 6379 shutdown
方法2: ps -ef | grep redis
kill -9 PID号
5.清空全部数据库
flushall
二 Redis命令
String类型
Hash类型
说明:可以用散列类型保存对象和属性值
例子:User对象{id:2,name:小明,age:19}
List类型
说明:Redis中的List集合是双端循环列表,分别可以从左右两个方向插入数据.
List集合可以当做队列使用,也可以当做栈使用
队列:存入数据的方向和获取数据的方向相反
栈:存入数据的方向和获取数据的方向相同
Redis事务命令
说明:redis中操作可以添加事务的支持.一项任务可以由多个redis命令完成,如果有一个命令失败导致入库失败时.需要实现事务回滚.
2. Redis入门案例
2.1 Redis常见用法
2.1.1 setex学习
/**
* 2.需求:
* 1.向redis中插入数据 k-v
* 2.为key设定超时时间 60秒后失效.
* 3.线程sleep 3秒
* 4.获取key的剩余的存活时间.
*
* 问题描述: 数据一定会被删除吗??????
* 问题说明: 如果使用redis 并且需要添加超时时间时 一般需要满足原子性要求.
* 原子性: 操作时要么成功 要么失败.但是必须同时完成.
*/
@Test
public void test02() throws InterruptedException {
Jedis jedis = new Jedis("192.168.126.129",6379);
jedis.setex("宝可梦", 60, "小火龙 妙蛙种子");
System.out.println(jedis.get("宝可梦"));
/* Jedis jedis = new Jedis("192.168.126.129",6379);
jedis.set("宝可梦", "小火龙 妙蛙种子");
int a = 1/0; //可能会出异常
jedis.expire("宝可梦", 60);
Thread.sleep(3000);
System.out.println(jedis.ttl("宝可梦"));*/
}
2.1.2 setnx
/**
* 3.需求如果发现key已经存在时 不修改数据.如果key不存在时才会修改数据.
*
*/
@Test
public void test03() throws InterruptedException {
Jedis jedis = new Jedis("192.168.126.129", 6379);
jedis.setnx("aaaa", "测试nx的方法");
/*if(jedis.exists("aaa")){
System.out.println("key已经存在 不做修改");
}else {
jedis.set("aaa", "测试数据");
}*/
System.out.println(jedis.get("aaaa"));
}
2.1.3 set 超时时间原子性操作
/**
* 需求:
* 1.要求用户赋值时,如果数据存在则不赋值. setnx
* 2.要求在赋值操作时,必须设定超时的时间 并且要求满足原子性 setex
*/
@Test
public void test04() throws InterruptedException {
Jedis jedis = new Jedis("192.168.126.129", 6379);
SetParams setParams = new SetParams();
setParams.nx().ex(20);
jedis.set("bbbb", "实现业务操作AAAA", setParams);
System.out.println(jedis.get("bbbb"));
}
2.1.4 list集合练习
@Test
public void testList() throws InterruptedException {
Jedis jedis = new Jedis("192.168.126.129", 6379);
jedis.lpush("list", "1","2","3");
System.out.println(jedis.rpop("list"));
}
2.1.5 redis事务控制
@Test
public void testTx() throws InterruptedException {
Jedis jedis = new Jedis("192.168.126.129", 6379);
//1.开启事务
Transaction transaction = jedis.multi();
try {
transaction.set("aa", "aa");
//提交事务
transaction.exec();
}catch (Exception e){
e.printStackTrace();
//回滚事务
transaction.discard();
}
}