非关系型数据库redis

Redis非关系型数据库。

一般作为关系型数据库的补充,把它们的优点都表现出来,弥补各自的缺点。
一般作为缓存存在。

安装和配置

1. 在安装目录创建一个bat文件

内容:redis-server.exe redis.windows.conf

2. 设置配置文件redis.windows.conf中 maxheap 1024000000

数据结构(指的是redis中value的数据结构)

string 字符串
hash 相当于java中的map集合,有key有value
list 队列的数据结构
set 集合,不允许重复元素。无序的
sortedset 有序集合。不允许重复元素

命令

string

1. 存储: set key value

2. 获取: get key

3. 删除: del key

hash

1. 存储: hset key field value

2. 获取:

hget key field: 获取指定的field对应的值
hgetall key:获取所有的field和value

3. 删除: hdel key field

4. 删除所有del key

list

1. 添加:

  1. lpush key value: 将元素加入列表左表
  2. rpush key value:将元素加入列表右边

    2.lrange key start end :范围获取

    start:开始索引
    end:结束索引
    -1代表获取到list的结尾

    3. lpop key: 删除列表最左边的元素,并将元素返回

    rpop key: 删除列表最右边的元素,并将元素返回

    4. 删除所有del key

set

1. 存储:sadd key value

2. 获取:smembers key:获取set集合中所有元素

3. srem key value:删除set集合中的某个元素

4. 删除所有del key

sortedset

1. 存储:zadd key score value

score越小,排名越靠前

2. 获取:zrange key start end [withscores]

start:开始索引
end:结束索引
-1代表获取到集合的结尾

3. 删除:zrem key value

4. 删除所有del key

通用命令

1. keys * : 查询所有的键

2. type key : 获取键对应的value的类型

Jedis

使用Java代码操作redis。
使用步骤
    1. 导入jar包
    2. 创建Jedis对象
    3. 使用jedis对象调用方法操作redis数据库,方法的名称和redis命令的名称一致
    4. 释放资源
        jedis.close()
setex设置一个有有效期的数据
jedis.zrevrange()倒序查询sortedset

jedis连接池

JedisPool   
    直接创建对象使用即可
        new JedisPool(config,"localhost",6379)
    获取连接
        Jedis jedis = jedisPool.getResource();

案例

1. 在index.html中,当页面加载完成后,发送异步请求。
2. 在后台Servlet中,获取请求。
3. Servlet调用Service,Service调用DAO
    service调用DAO之前,先从redis中获取数据
4. DAO查询数据库,返回省份列表数据。
5. 依次返回到Servlet后, list需要转为json格式的字符串返回到前台。
6. 在前台index.html中,异步请求的回调函数位置,获取返回的json数据。解析json数据,通过dom操作,把数据展示到页面中。

缓存

前提:
    1. 数据需要经常进行查询
    2. 数据不经常发生变化
策略:
    优先从读取速度比较快的地方获取数据。
        先从redis中拿,如果有,直接返回
                   如果没有,查询数据库,同时把数据存入redis

优化:

1. 时间换空间
    byte[] bytes = new byte[1024];
2. 空间换时间
3. 空间换空间
4. 时间换时间

猜你喜欢

转载自www.cnblogs.com/maomaodesu/p/12143050.html