设置后台进程
进入redis.conf中的136行改成 yes 设置后台进程
- 修改bind ,改成qianfeng01
- 改密码 找到第500行左右 requorepass 改成123456
- 登录的代码
查看 ps -ef | grep redis
①redis-server /usr/local/redis/redis.conf
redis-cli -h qianfeng01 -p 6379 -a 密码
②redis-cli -h qianfeng01 -p 6379 -a 123456
进入的常用代码:
Select indexid 0-15 切换库
Flushdb 清理当前库
Flushall 清理所有库
1. #根据匹配模式查询相关的key
keys * #查询所有的key
keys ?O* #查询第二个字符是O的key
2. dbsize #查看当前库下所有的key的个数
3. exists key #判断某一个key是否存在, 0表示不存在,1表示存在
4. type key #查看key的类型
5. del key #删除某一个key 1 表示删除成功 0表示删除失败
6. unlink key #删除某一个key(非阻塞删除)
#仅将key从keyspace元数据中删除,真正的删除会在后续中异步删除 (先奏后斩的意思)
7. expire key seconds #设置key的存活时间
8. persist key #清除key的存活时间, 已经过期的清除没有意义
9. ttl key #查看key的存活时间 -2表示过期 -1 表示永不过期
set指令的语法格式:set key value [EX seconds] [PX milliseconds] [NX|XX]
EX: KV的存活时间,单位是秒
PX: KV的存活时间,单位是毫秒
NX: K不存在时,会设置成功
XX: K已经存在时,会覆盖
get指令的语法格式:
get key
append city shanghai <== 在key对应的原有的value上追加字符串
有关运算的
set num 1
decr num <== 递减1 要求 value的类型是整形
decrb num 5 <== 递减5 指定步长
incr num <== 自增+1
incrby num 2 <== 指定自增的步长
有关字符串的
get city "beijingshanghai"
getrange city 0 2 包前包后 截取字符串
getsetcity shenyang <== 覆盖值,并返回原有的值
设置多对
mset username zhangsan age 23 gender f isMarry false <== 设置多对KV
mget username age gender isMarry num <== 获取多个Key的value值
api实现
package com.qf;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.params.SetParams;
import java.util.ArrayList;
import java.util.List;
public class RedisDemo03_String {
public static void main(String[] args) {
setOfString();
getOfString();
}
//set命令的测试
public static void setOfString(){
Jedis jedis = new Jedis("qianfeng01",6379);
jedis.auth("123456");
jedis.set("classno","sz2103");
SetParams setParams = new SetParams(); //无参构造器
setParams.ex(100); //存活时间
//setParams.px(5000);
jedis.set("teahcer","cidy",setParams);
jedis.setnx("teaher1","anjing");
jedis.append("city","is good"); //对已有的进行追加
jedis.incr("num");
jedis.incrBy("num",3);
jedis.mset("k1","100","k2","200");
jedis.close();
}
//get命令的测试
public static void getOfString(){
Jedis jedis = new Jedis("qianfeng01",6379);
jedis.auth("123456");
String classno = jedis.get("classno"); //get(key)
System.out.println("classno:"+classno);
String teacher = jedis.get("teacher");
System.out.println("teahcer"+teacher);
Long teacherTTL = jedis.ttl("teacher"); //存活时间
System.out.println("teacherTTL:"+teacherTTL);
String teaher1 = jedis.get("teacher1");
System.out.println("teacher1:"+teaher1);
String city = jedis.get("city");
System.out.println("city"+city);
String num = jedis.get("num");
System.out.println(num);
List<String> list = jedis.mget("k1", "k2"); //对多种ky的遍历 打印了value
for (String s : list){
System.out.println(s);
}
jedis.close();
}
}
hashes类型
# hset命令的语法格式:
hset key field value
hmset key field value [field value ...]
# hget命令的语法格式:
hget key field
hmget key field [field ...]
qianfeng01:6379> hset people username lucy <== 设置people的姓名字段的值
(integer) 1
qianfeng01:6379> hmset people age 24 gender m isMarry true <== 设置people的其他多个字段的值
OK
qianfeng01:6379> hget people username <== 获取people的姓名字段的值
"lucy"
qianfeng01:6379> hmget people username age gender isMarry <== 获取people的多个字段的值
1) "lucy"
2) "24"
3) "m"
4) "true"
qianfeng01:6379> hdel people username isMarry <== 删除people的多个字段
(integer) 2
qianfeng01:6379> hgetall people <== 获取people的所有字段和值
1) "age"
2) "24"
3) "gender"
4) "m"
qianfeng01:6379> HEXISTS people gender <== 判断gender字段是否存在, 1表示存在, 0表示不存在
(integer) 1
qianfeng01:6379> HEXISTS people isMarry
(integer) 0
qianfeng01:6379> HINCRBY people age 4 <== 对整数类型的field进行增加 数字
(integer) 28
qianfeng01:6379> hkeys people <== 获取hash类型的所有的fields
1) "age"
2) "gender"
qianfeng01:6379> HLEN people <== 获取hash类型的fields的个数
(integer) 2
qianfeng01:6379> hsetnx people isMarry false <== 设置字段的值,如果不存在,就成功,如果存在,就报错
(integer) 1
qianfeng01:6379> hsetnx people isMarry true <== 0表示不成功,1表示成功
(integer) 0
qianfeng01:6379> hget people isMarry
"false"
qianfeng01:6379> HSTRLEN people isMarry <== 获取指定的field的value的字符串长度
(integer) 5
qianfeng01:6379> hvals people <== 获取hash类型的所有的value
1) "28"
2) "m"
3) "false"
Api
package com.qf; import redis.clients.jedis.Jedis; import java.util.HashMap; import java.util.Map; import java.util.Set; public class RedisDemo04 { public static void main(String[] args) { hsetOfHash(); hgetOfHash(); } public static void hsetOfHash(){ Jedis jedis = new Jedis("qianfeng01",6379); jedis.auth("123456"); Map<String,String> map = new HashMap<>(); map.put("product_id","1091"); map.put("product_name","thinkpadt760"); map.put("product_desc","系列好"); map.put("product_warehouse","901"); map.put("product_evaluation","非常好"); jedis.hmset("product_clothing_1001",map); jedis.close(); } public static void hgetOfHash(){ Jedis jedis = new Jedis("qianfeng01",6379); jedis.auth("123456"); if(jedis.exists("product_clothing_1001")){ Map<String,String> map = jedis.hgetAll("product_clothing_1001"); Set<Map.Entry<String,String>> entries = map.entrySet(); for(Map.Entry<String,String> entry :entries ){ System.out.println(entry.getKey()+"\t"+entry.getValue()); } } jedis.close(); } }