Redis是一个高性能的Key -Value 数据库
1.速度快,读的速度是110000次/s,写的速度是81000次/s
2.支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
3.支持多种数据类型,string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
4.简单,不依赖外部库、单 线程
5.主从复制,主节点的数据做副本,这个高可用的基石
6.高可用,分布式
7.支持多张编程语言
JAVA 操作redis:
一,基本链接
//连接本地的 Redis 服务
Jedis jedis = new Jedis("localhost");
System.out.println("连接成功");
//查看服务是否运行
System.out.println("服务正在运行: "+jedis.ping());
二 各数据基本操作
1.String
jedis.set("name","何xiao树"); //存
jedis.append("name", "生活不值得!");//拼接
jedis.del("name"); //删除
jedis.mset("name","aa","age","23","qq","123456");//存多个
2.Hash -map操作
Hash更容易存储对象,比如在设置用户姓名,年龄,邮箱等属性时,用string需要分别来进行设置存储,通过Hash就可以把属性放到对象中,然后再存储对象,因此相对于string类型,Hash类型存储对象可以占用更少的字节
Map<String, String> map = new HashMap<String, String>();
map.put("name", "yc");
map.put("age", "22");
map.put("qq", "1933108196");
jedis.hmset("user",map);
如图:
List<String> hmget = jedis.hmget("user", "name","qq");//取值User中key为name,qq的值
jedis.hdel("user", "age");//删除map中某个key值
System.out.println(jedis.hlen("user"));//返回key为user的键中存放的值的个数2
System.out.println(jedis.exists("user"));//是否存在key为user的记录,返回true
System.out.println(jedis.hkeys("user"));//返回map对象中的所有key
System.out.println(jedis.hvals("user"));//返回map对象中的所有value
3.List 操作
//存list
//从右添加
jedis.rpush("list", "1");
jedis.rpush("list", "2");
jedis.rpush("list", "3");
jedis.rpush("list", "4");
jedis.rpush("list", "5");
//从左添加
jedis.lpush("list", "1");
jedis.lpush("list", "2");
jedis.lpush("list", "3");
jedis.lpush("list", "4");
jedis.lpush("list", "5");
如图:
//取值。 -1 表示取所有的值
List<String> lrange = jedis.lrange("list", 0, -1);
lrange.forEach(k -> System.out.println(k));
//删除
jedis.del("list");
4.Set 操作, set 一个无序集合。不允许元素重复。
jedis.sadd("me","何");
jedis.sadd("me", "xiao");
jedis.sadd("me", "树");
System.out.println(jedis.smembers("me"));//获取所有加入的value
System.out.println(jedis.sismember("me", "who"));//判断who是否是user集合的元素
System.out.println(jedis.srandmember("me"));//返回第一个元素
System.out.println(jedis.scard("me"));//返回集合的元素个数
jedis.sadd("me","何");//如果 set 添加重复的value,会覆盖
5.sorted set
jedis.zadd("mysort",1.0,"三国演义"); // key,score,value
jedis.zadd("mysort",2.0,"西游记");
jedis.zadd("mysort",3.0,"水浒传");
jedis.zadd("mysort",4.0,"红楼梦");
Map<String,Double>map = new HashMap<>();
map.put("mutouliu",5.0);
jedis.zadd("mysort", map);
如图:
三、实用操作
// key为age,Value 数值型
// +1
jedis.incr("age");
// -1
jedis.decr("age");
// 阶梯加,每次增加 10
jedis.incrBy("age", 10);
// 阶梯减,每次减少 10
jedis.decrBy("age", 10);
//阶梯加 ,这个是操作hash,User对象,key为age;看第一张图!
jedis.hincrBy("user", "age", 23);
//阶梯减,放 负数就减了
jedis.hincrBy("user", "age",-27);
//排序,数值集合
jedis.sort("list")
Spring boot 2.x 以后 StringRedisTemplate 操作Redis时,db切换
//获取链接再切换db,是很不靠谱的,受伤的是你自己
stringRedisTemplate.move(key,db);
后续在更新…