zoukankan      html  css  js  c++  java
  • redis数据库

    前言

      SQL数据库,指关系型数据库。有MySQL、SQL Server等

      NoSQL(Not Only SQL)数据库,指非关系型数据库。有Redis、mongoDB、CouchDB、Cassandra、riak、membase等

      NoSQL数据库相较与传统关系型数据库的优点(传统关系型数据库无法适用web2.0海量数据的操作维护):

    • 易扩展(它属于非关系型的,数据之间没有关系)
    • 灵活的数据类型(不需要对读写的数据建立字段)
    • 大数据量,高性能(对于大数据量和高并发的读写性能支持很好)
    • 高可用(在不影响系统性能情况下,可以使用框架)

    redis for window (zip)

      redis.windows.conf 文件配置密码:requirepass 123456

      加入服务:redis-server --service-install redis.windows.conf

      卸载服务:redis-server --service-uninstall

      开启服务:redis-server --service-start

      停止服务:redis-server --service-stop

    redis使用(jedis)

      redis默认端口为6379

      redis服务器根据配置文件启动

            //设置端口
            Jedis jedis = new Jedis("主机名", 6379);
            jedis.auth("密码");
            jedis.set("name","devon");
            String name = jedis.get("name");
            System.out.println(name);
            //4.释放资源
            jedis.close();
    Jedis数据库连接测试
            //获得连接池
            JedisPoolConfig config = new JedisPoolConfig();
            //设置最大连接池
            config.setMaxTotal(30);
            //设置最大空闲连接数
            config.setMaxIdle(10);
            //获得核心对象
            JedisPool jedisPool = new JedisPool(config, "主机名", 6379);
            Jedis jedis = null;
            try {
                jedis = jedisPool.getResource();
                jedis.auth("密码");
                jedis.set("name","张三");
                String value = jedis.get("name");
                System.out.println(value);
            }catch (Exception e){
                e.printStackTrace();
            }finally {
                if (jedis!=null){
                    jedis.close();
                }
                if (jedisPool != null){
                    jedisPool.close();
                }
            }
    Jedis连接池数据库连接测试

    key

    keys *  #查询所有key

    keys str?   #查询以字符串str开头的key

    del key1 key2 key3 ...   #删除多个key

    exists key  #判断key是否存在,存在返回1不存在返回0

    rename key newkey   #对key进行重命名

    expire  key times(秒)   #设置过期的时间

    ttl key  #查看key所剩的时间,若没有设置,则返回-1

    type key   #获取指定key的类型

    string

    set key value  # 赋值

    get key  # 获取值

    get set company baidu ==> get company , set company baidu del key  # 删除

    incr num  # num 的值+1 没有默认为0 加一就是1 如果num类型不能做加一运算 报错

    decr num   #减一 同理

    incrby num 5  #num += 5

    decrby num 5  #num -= 5;

    append num 5  #num 后面追加字符串“5” 如果num不存在默认为空字符串

    hashMap

    hset myhash username jack  #设置一个键值对 

    hmset myhash username rose age 21  #设置多个键值对

    hget myhash username  #获取一个键的值

    hmget myhash username age  #获取多个hash键位的数据

    hgetall myhash   #获取某个hash的所有键值对

    hdel myhash username age  #删除特定的键值

    hgetall myhash  #获取myhash的所有键值对

    del myhash  #删除整个集合

    hexists myhash username  #判断某个键是否存在

     list

    1.两端添加:lpush、rpush

    lpush list 1 2 3  #从左侧往list表中插入1 2 3

    rpush list a b c  #从右侧忘list表中插入a b c

    2.查看列表:lrange

    lrange list 0 -1  #从头到尾查看

    lrange list 0 5   #从开始到第5个查看

    3.两端弹出:lpop、rpop

    lpop list   #从左边弹出第一个数

    rpop list  #从尾部弹出第一个数

    4.获取列表元素个数:llen

    llen  list   #查看元素个数

    5.扩展命令:lpushx、rpushx、lrem、lset、rpoplppush

    lpushx list x   #插入x到list表的开头,与lpush区别是,lpush插入的list为空的话则建一个list再插入,lpushx不会插入

    rpushx list y   #插入y到list表的尾部

    lrem list 2 3   #从头到尾删除2个3

    lrem list -2 1   #从尾到头删除2个1,负号代表从后往前

    lrem list 0 2   #删除所有2

    lset list 3 mmm   #在list表第3个下标设置mmm

    linset list before a yy   #在list表中a之前插入yy

    linset list after b xx   #在list表中b之后插入xx

    rpoplpush list1 list2   #将list1表的开头压入到list2表的结尾

    set 

    sadd  myset  a b c #往myset中存入a,b,c

    srem myset  a   # 删除a

    smembers  myset   #查看set中的值

    sismember myset  a   #查看a是否存在myset中

    sdiff  myset1   myset2     #差集运算,两个集合的顺序有关

    sinter  myset1 myset2     #交集运算 

    sunion  myset1 myset2  #并集运算

    scard  myset  #查询set中值的数量

    srandmember  myset  #随机返回一个值

    sdiffstore 新集合 集合1 集合2  #集合1,集合2的差值存到新集合中

    sinterstore 新集合 集合1 集合2  #集合1,集合2的交集存到新集合中

    sunionstore 新集合 集合1 集合2  #集合1,集合2的并集存到新集合中

    sorted-set

    sorted-set:每个成员都有一个分数与之关联,成员唯一,可以对应多个分数

    zadd mysort 10 a 20 b 30 c   #存入值a的分数是10、b的分数是20、c的分数是30

    zscore mysort a   #获得a的分数

    zrem mysort a b   #删除成员a、b

    zremrangebyrank mysort 0 4   #删除排名0-4的成员

    zremrangebyscore mysort 10 30   #删除分数10-30的成员

    zrange mysort 0 -1   #查看所有成员

    zrange mysort 0 -1 withscores   #查询成员及分数,从小到大

    zrevrange mysort 0 -1 withscores   #查询成员及分数,从大到小

    zrangebyscore mysort 0 100 withscores   #显示0-100分数的成员

    zrangebyscore mysort 0 100 withscores limit 0 2   #显示0-100分数的成员的前两名

    zincrby mysort 10 c   #给c加上10

    zcount mysort 80 100   # 显示80-100分数的成员个数

  • 相关阅读:
    tcp三次握手和四次挥手
    tcp/ip五层协议
    osi七层模型
    函数与模块间作用域的区别
    简易版学生选课系统
    用pathon实现计算器功能
    python三大神器之生成器
    python三大神器之迭代器
    用python实现购物车功能
    正则表达式用法简介
  • 原文地址:https://www.cnblogs.com/shuzhixia/p/14560496.html
Copyright © 2011-2022 走看看