了解Redis

来源:互联网 发布:淘宝护肤品店铺范文 编辑:程序博客网 时间:2024/06/05 00:39
  1. 什么是NOSQL(NOT-ONLY-SQL)
    1.1 高并发读写需求
    1.2 海量数据的高效存储和访问
    1.3 高可扩展性和高可用性
  2. NOSQL分类
    2.1 键值对
    2.2 列存储
    2.3 文档数据库
    2.4 图形数据库
  3. NOSQL 特点
    3.1 易扩展
    3.2 大数据量,高性能
    3.3 灵活的数据模型
    3.4 高可用
  4. redis概述
    4.1 数据类型
    字符串类型 散列类型 列表类型 集合类型
    4.2 应用场景
    缓存 任务队列 应用排行榜 网站访问设计 数据过期处理 分布式集群架构中的session分离
  5. 存储数据 set key value
    获取数据 get key
    删除数据 del key
    查询所有的数据 keys *
  6. Jedis连接reids的方式
    导入对应的Jedis包(jedis-2.7.0.jar,commons-pool2.2.3.jar)
    1.单实例模式(主要代码)
    /**
    *设置ip地址
    **/
    Jedis jedes = new Jedis(“ip”,6379);
    jedes .set(key,value);
    jedis.get(key);
    jedis.close();

    1. 连接池
      //获得连接池配置对象
      JedisPoolConfig config = new JedisPoolConfig();
      //最大连接数
      config.setMaxTotal(30);
      //最大空闲数
      config.SetMaxIdle(10);
      //获取连接池
      JedisPool pool = new JedisPool(config,ip,6379);
      //获取Jedis对象
      Jedis jedis = null;
      try(){
      jedis = pool.getResource();
      jedis.set(key,value);
      /**
      *具体逻辑操作
      **/
      }catch(Exception e){
      e.printStackTrace();l
      }finally{
      if(jedis!=null){
      jedis.close();
      }
      if(pool !=null){
      pool.close();
      }
      }
      redis数据结构
  7. 存储字符串

    1. 字符串(String)
      字符串列表(list)
      有序字符串列表(sorted set)
      哈希 (hash)
      字符串集合(set)
      2.key定义遵循规范
      3.字符串操作
      set(key,value)赋值
      get(key)取值
      del(key) 删除
      incr key 增加 ++1
      decr key 自减1
      incrby key num 指定key的value增加num
      decrby key num 指定key的value减num
      append key param 指定key的value追加param
    2. hash
      String Key和String Value 的map集合
      4.1 存
      hset key value(value中也是key1 value1);key是存储hash值的key
      hmset key value(key1 value1 key2 value2 …..)括号中的key-value是存储在键key对应的value
      4.2取
      hget key key1
      hmget key key1 key2
      hgetall key 获取所有的key-value
      4.3 删
      hdel key key1[ key2]
      del key 删除整个hash
      4.4 修改
      hincrby key key1 addvalue 给对应的key增加值
      4.5 自学操作
      hexist() key key1 存在返回1
      hlen key 返回长度
      hkeys 返回所有的key
      hvals 返回所有的值

8.存储list
8.1 ArrayList使用数组方式、LinkList双向链表方式
8.1.1 两端添加
1. lpush key params 左端添加
2. rpush key params 右端添加
3. lrange key start end 查询列表 start起点 end 结束(lrange mylist 0 -1)
4. lpop key 左端弹出(lpop mylist)
5. rpop key 右端弹出(rpop mylist)
6. llen key 查询长度(llen mylist)
7. lpushx key param 如果key存在插入,否则不插入
8. lrem key times value 删除times个value
9. lset key index value 在某个角标后插入一个value
10. linsert key before value value1 在某个值之前插入值
11. rpoplpush key1 key2 将key1中的弹出压入到key2中
12. rpoplpush 应用场景

9.存储set(不能重复)
1. 添加/删除元素
sadd key value 向key中添加value
srem key value 删除key下的value值
2. 获取集合中的元素
smembers key 查询key下的所有value
sismember key value 判断value是否在key下的集合中
3. 差集运算
sdiff key key1 判断key的value中存在,而key1的value中不存在的值
4. 交集运算
sinter key key2 获取两个key下相同的value
5.并集运算
sunion key key2 合并key下的value去重复
6. 获取集合中成员数量 scard key
7. 获取集合中的随机值 srandmember key
8. sdiffstore key key1 key2 将key1 key2差集存储到key
9. sinterstore key key1 key2 将key1 key2交集存储到key
10. sunion key key1 key2 将key1 key2并集存储到key

使用场景:跟踪唯一性数据、用于维护数据对象之间的关联关系**

10 . 存储Sorted-Set
Sorted-Set 和Set 区别
位置有序
1. 添加元素
zadd key grade value[grade1 value…]
zadd mysort 70 a 80 b 90 c
2.获取元素
1. zscore key value 获取对应value的grade
2. zcard key 查看长度
3. zrem key value[ value1]删除对应的value的grade
4. zrange key [0 -1]查询索引的value
5. zrange key [0 -1 ] withscores 显示value和grade(从小到大)
6. zrevrange key [0 -1 ] withscores 显示value和grade (从大到小)
7. zremrangebyrank key 0 4 通过排名删除0-4
8. zremrangebyscore key 0 100 通过grade删除
9. zrangebyscore key 0 100 withscore limit 0 2 通过grade查询 显示0-2
10. zincrby key param value 对应值的grade增加param
11. zcount key grade1 grade2 统计在grade1 到grade2 总数

使用场景:
1. 大型游戏在线游戏积分排行榜
2. 构建索引数据

  1. keys操作

11.持久化
1. rdb (默认)
2. aof