1 、redis 概述
redis是一款高性能的非关系型数据库
NOSQL非关系型数据库:数据之间没有关联关系,数据存储在内存中。相比于关系数据库的又=优势 和缺点:
优点:
1)成本:nosql数据库简单易部署,基本都是开源软件,不需要像使用oracle那样花费大量成本购买使用,相比关系型数据库价格便宜。
2)查询速度:nosql数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询速度远不及nosql数据库。
3)存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而数据库则只支持基础类型。
4)扩展性:关系型数据库有类似join这样的多表查询机制的限制导致扩展很艰难。
缺点:
1)维护的工具和资料有限,因为nosql是属于新的技术,不能和关系型数据库10几年的技术同日而语。
2)不提供对sql的支持,如果不支持sql这样的工业标准,将产生一定用户的学习和使用成本。
3)不提供关系型数据库对事务的处理。
2、redis数据结构
- redis存储的是:key,value格式的数据,其中key为字符串,value为任意类型。
- 物种擦略数据结构:
- 1) 字符串类型 string
- 2) 哈希类型 hash : map格式
- 3) 列表类型 list : linkedlist格式。支持重复元素
- 4) 集合类型 set : 不允许重复元素
- 5) 有序集合类型 sortedset:不允许重复元素,且元素有顺序
redis命令行操作命令
2、1 String 字符串
存储:set key value --set username zhangsan
获取:get key -- get username
删除: del key -- del username
2、2 hash 哈希
存储:hset key field value -- hset myhash username list
获取:hget key filed -- hget myhash username
删除:hdel key field -- hdel myhash username
2、3 list 列表
存储:lpush key value,将元素加入列表左边
rpush key value:将元素加入列表右边
获取:lrange key start end :范围获取
删除:lpop key:删除最左边的元素,并将元素返回
rpop key:删除最右边的元素,并将元素返回
2、4 set 集合
存储:sadd key value -- sadd myset a
获取:smembers key -- 获取集合中的所有元素
删除:srem key value -- sream myset a
2、4 sortedset有序集合
存储:zadd key score value -- zadd mysort 60 zhangsan
获取:zrange key start end [withscores] --zadd mysort 0 -1
删除:zrem key value -- zrem mysort zhangsan
通用命令: 1. keys * : 查询所有的键
2. type key : 获取键对应的value的类型
3. del key:删除指定的key value
代码演示
/**
* Jdies快速入门
*/
public class JedisTest {
@Test
public void testString() {
//1获取连接
Jedis jedis = new Jedis();//如果使用空参构造,默认值为localhost 6379
//操作
//存储
jedis.set("username","zhangsan");
//获取
String username = jedis.get("username");
System.out.println(username);
//关闭连接/
//可以使用serex()方法存储可以指定给过期事件key value
jedis.setex("username",3000,"23856877852765872587");
System.out.println("----------------------------------------------------");
jedis.close();
}
@Test
public void testHash(){
//1/获取链接
Jedis jedis = new Jedis();
jedis.hset("user","name","lisi");
String hget = jedis.hget("user", "name");
System.out.println(hget);
//获取所有
Map<String, String> user = jedis.hgetAll("user");
Set<String> keySet = user.keySet();
for (String key: keySet) {
System.out.println(user.get(key));
}
System.out.println("----------------------------------------------------");
jedis.close();
}
@Test
public void testSet(){
Jedis jedis = new Jedis();
jedis.sadd("myset","java","c#","c++");
Set<String> myset = jedis.smembers("myset");
for (String s : myset) {
System.out.println(s);
}
System.out.println("----------------------------------------------------");
jedis.close();
}
@Test
public void testsortset(){
Jedis jedis = new Jedis();
jedis.zadd("mysortset",3,"亚瑟");
jedis.zadd("mysortset",1,"f发放f");
jedis.zadd("mysortset",4,"fff");
Set<String> mysortset = jedis.zrange("mysortset", 0, -1);
Set<Tuple> mysortset1 = jedis.zrangeWithScores("mysortset", 0, -1);
for (String s : mysortset) {
System.out.println(s);
}
for (Tuple tuple : mysortset1) {
System.out.println(tuple.getScore()+" = "+tuple.getElement());
}
System.out.println("----------------------------------------------------");
jedis.close();
}
|
|