zoukankan      html  css  js  c++  java
  • redis入门学习

    redis

    redis数据支持的值类型: 键都是字符串

    1 字符串类型

    2 散列类型--- hash

    3 列表类型--- list

    4 集合类型--- set

    5 有序集合类型--sortedset

    ps:注意命名:
         key的常用的写法: 项目名_子模块_key名称

    字符串类型:
    设置:set key value
    获取:get key
    删除:del key
    自增 +1:incr key
    自减 -1:decr key
    扩展的命令:
    getset key value:先获取再设置
    incrby key count:指定增加数量
    decrby key count:指定减少数量
    append key value:追加
    若有指定的key 则追加
    若无,则设置一个

    hash (存储对象的属性值):把值看成map集合

    设置:
    hset key subkey1 subvalue1 :设置一个键值对
    hmset key subkey1 subvalue1 subkey2 subvalue2 ...:设置多个键值对

    获取:
    hget key subkey:获取一个子键的值
    hmget key subkey1 subkey2...:获取多个子键的值
    hgetall key:获取所有的键值对

    删除-子键
    hdel key subkey1 subkey2 ...

    hdel user2 age

    -----------------------------------------------------------------------------------------------------
    列表类型 -list

    两端的插入:
    lpush key member1 member2.. : 往左边开始插入

    a b c d

    lpush l1 a b c d

    d,c,b,a


    rpush key member1 member2.. :往右边开始插入
    e f g h

    rpush l1 e f g h

    e,f,g,h

    l1=e f g h || l1=d c b a e f g h


    lrange key startindex endindex
    lrange key 0 -1 :查看所有
    lrange key 0 2

    两端的删除:
    lpop key :左边弹出一个
    lpop l1


    rpop key :右边弹出一个
    rpop l1

    扩展:

    llen key :获取key对应的元素数量
    lrem key count member :在key中移除指定个数的成员 l2 = a b c d a b c d a b c d
    count > 0 :从左往右移除指定个数 lrem l2 2 a l2 =b c d b c d a b c d
    count < 0 :从右往左移除指定个数 lrem l2 -2 d l2 = b c d b c a b c
    count = 0 :清空list中指定元素 lrem l2 0 c l2 = b d b a b
    lrem l2 3 c-->lrem l2 -3 c
    del key : 全删

    -----------------------------------------------------------------------------------------------------

    集合类型--set类型
    特点:无序唯一

    sadd key member1 member2 :添加 a b c 4

    srem key member1 member2 :移除指定元素

    smembers key :查看

    扩展:
    sismember key member :判断一个set中是否有指定的成员
    有:1
    无:0


    聚合运算 sa2=a b c d sa3=b c d e
    sdiff key1 key2 :我有你没有
    sunion key1 key2:我有加你有 a b c d b c d e == a b c d e
    sinter key1 key2:我有你也有 b c d

    sdiffstore key1 key2 key3:将key2有的key3没有的差异部分插入key1
    sunionstore key1 key2 key3:将key2和key3并集部分插入key1
    sinterstore key1 key2 key3:将key2和key3交集部分插入key1

    sa1=a b c d

    sa2=b c d e

    sinterstore sa3 sa1 sa2

    del key : 全删

    --------------------------------------------------------------------------------------------------

    sortedset类型(排行榜)
    必须要有一个数值来与之关联,因为要通过这个数值来排序

    zadd key score1 member1 score2 member2...: 添加

    zscore key member :获取成员的得分

    zrem key member1 member2... :删除指定成员

    zcard key :展示元素的长度

    展示所有的元素:
    zrange key startindex endindex [withscores] 升序
    zrevrange key 0 -1 withscores [withscores] 降序

    del key : 全删

    ------------------------------------------------------------------------------------------------

    redis通用的操作(掌握)

    4 del key:删除指定key

    1 keys *:查询所有的key
    2 exists key:判断是否有指定的key 若有返回1,否则返回0

    3 ttl key:展示指定key的存活时间
    若返回值为 -1:永不过期
    若返回值为 -2:已过期或者不存在
    * expire key 秒数:设置这个key在缓存中的存活时间

    5 rename key 新key:重命名

    6 type key:判断一个key的类型

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    redis的特性--和数据库相关的命令操作

    1 多数据库(掌握)

    select index:切换库
    move key 指定数据库: 将当前库的数据移动到指定库中
    dbsize: 返回当前库中有多少个key
    flushdb:清空当前数据库数据
    flushall:清空当前实例下所有的数据库数据

    2 消息的订阅和发布(了解)

    发布信息:publish 频道 消息内容

    订阅单个信息: subscribe 频道1
    订阅多个信息: psubscribe channel 频道1 频道2...

    小A --在redis中订阅java

    小B --在redis中订阅java和js

    ps: redis的事务(了解)
    关系型数据库和非关系型数据库的事务区别:
    关系型数据库的事物:
    1 事务执行期间,按照顺序依次执行每一条程序,直到全部执行完毕才提交
    2 事务执行期间,如果遇到了异常,将会回滚,下面任何程序都不会执行了

    非关系型数据库的事物:
    1 事务执行期间,所有的任何程序全部处于等待不会执行,直到提交事务的时候才会按照顺序依次执行
    2 事务执行期间,如果遇到了异常,将会被忽略继续往下执行程序

    注意:工作中在程序中使用的是关系型数据库的事务

    ----------------------------------------------------------------------------------------------------

    redis的持久化(了解):
    持久化: 就是将数据从内存保存到磁盘

    1 rdb(快照方式)
    默认开启的
    bin/redis.conf 查save

    保存策略:
    # after 900 sec (15 min) if at least 1 key changed
    # after 300 sec (5 min) if at least 10 keys changed
    # after 60 sec if at least 10000 keys changed

    2 aof(配置文件命令方式)
    默认不开启
    若要开启,必须修改配置文件bin/redis.conf 搜appendonly
    appendonly yes

    保存策略:
    # appendfsync always 每次都写入
    # appendfsync everysec 每秒写入
    appendfsync no 不写入

    java代码操作redis数据库数据(重点)
    java代码-->jdbc-->mysql
    java代码-->jsdis-->redies

    jedis:相当于jdbc
    使用步骤:
    1.导入jar包
    2.创建jedis对象
    new Jedis("192.168.17.136", 6379)
    3.通过jedis操作redis数据库
    4.释放资源

    使用连接池优化:
    // 创建数据源的配置对象
    JedisPoolConfig config = new JedisPoolConfig();
    // 配置初始化连接
    config.setMaxTotal(1000);
    // 配置空闲时期的最大连接
    config.setMaxIdle(5);
    .......

    // 创建一个连接池
    JedisPool pool = new JedisPool(config, "192.168.2.132",6379);
    // 获取jedis对象
    Jedis jedis = pool.getResource();

  • 相关阅读:
    超多sql分步骤类型题解
    sql 高级函数
    sql 每天下单的老客数量
    sql
    面试-JAVA常见回答
    查询员工的累计薪水
    背包问题模板
    动态规划理解合集
    SQL语句统计每天、每月、每年的 数据
    机考刷机-树相关
  • 原文地址:https://www.cnblogs.com/zbdouble/p/8414321.html
Copyright © 2011-2022 走看看