redis 服务器命令
cd /usr/local/src/redis
1.启动redis
redis-server redis.conf
2.进入客户端
redis-cli -p 6379
查看信息
info replication
3.关闭redis
方法1: redis-cli -p 6379 shutdown
方法2: ps -ef | grep redis
kill -9 PID号
4.清空全部数据库
flushall
Redis命令
String类型
Hash类型
说明:可以用散列类型保存对象和属性值
例子:User对象{id:2,name:小明,age:19}
List类型
说明:Redis中的List集合是双端循环列表,分别可以从左右两个方向插入数据.
List集合可以当做队列使用,也可以当做栈使用
- 队列:存入数据的方向和获取数据的方向相反
- 栈:存入数据的方向和获取数据的方向相同
Redis事务命令
说明:redis中操作可以添加事务的支持.一项任务可以由多个redis命令完成,如果有一个命令失败导致入库失败时.需要实现事务回滚.
Redis常见用法
setex 设置超时时间
需求:
* 1.向redis中插入数据 k-v
* 2.为key设定超时时间 60秒后失效.
* 3.线程sleep 3秒
* 4.获取key的剩余的存活时间.
@Test
public void test02() throws InterruptedException {
Jedis jedis = new Jedis("192.168.126.129",6379);
jedis.setex("湖人", 60, "总冠军");
System.out.println(jedis.get("湖人"));
}
@Test
public void test02() throws InterruptedException {
Jedis jedis = new Jedis("192.168.126.129",6379);
jedis.set("宝可梦", "小火龙 妙蛙种子");
//指定key的生效时间
jedis.expire("宝可梦", 60);
Thread.sleep(3000);
//检查key的剩余存活时间
System.out.println(jedis.ttl("宝可梦"));
}
setnx
如果发现key已经存在时 不修改数据.如果key不存在时才会修改数据
/**
* 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"));
}
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"));
}
list集合练习
说明:Redis中的List集合是双端循环列表,分别可以从左右两个方向插入数据.
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"));
}
redis事务控制
说明:redis中操作可以添加事务的支持.一项任务可以由多个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();
}
}