美文网首页
Nosql与Redis

Nosql与Redis

作者: 冬风诉 | 来源:发表于2019-10-26 16:03 被阅读0次

                                       ONSQL

    NOSQL指的是非关系型数据库,是对不同于传统的关系型数据库的数据库管理系统的统称,

    特点:

    1,不支持sql语法,NOSQL中没有一种通用的语法每种数据库都有自己的语法,

    2,因NOSQL数据库存在于内存当中,所以它的读写性能很高,

    3,NOSQL的存储方式十分灵活,存储方式可以是JSON文档,键值对等其它方式,

                                      Redis

    特点:

    1,redis支持数据的持久化,可以将内存中的数据保存在磁盘当中,重启的时候可以再次加载使用、

    2,redis不仅支持简单的key—value类型数据,而且还把value分为list,set,zset,hash等~数据结构存储

    3,redis交换数据快,所以在服务器中常用来存储一些需要频繁调取的数据,以提高效率,

    一,redis基本使用

    1,启动:redis-server

    2,关闭:redis-cli SHUTDOWN或者ctrl+d,,

    3,多数据库:redis默认支持16个数据库,从0开始的递增数字命名,如:SELECT1,SELECT来选择使用哪个数据库。

    4,命令行客服端:

    方法一:将命令作为redis-cli的参数执行1,¥redis-cli -h 127.0.0.1 -p 6379

                                                                   2,¥redis-cli PING

    方法二:进入交互模式¥redis-cli

                                            PING

                                            输出:ECHO hello


                                           基础命令

    1,设置键和值

    通过SET key values来设置的一个新的键值对   MSET设置多个

    如:SET bar 1

    同时设置多个:MSET bar1 a bar2 b

    2,获得符合规则的键名列表

    通过 KEYS   patten 来获取key所对应的 value

    (1),KEYS *

    (2),这里的patten支持glod风格的统配符格式

    (3),GET bar #存在返回对应的value值,没有返回uil,表示空的意思,

    (4),MGET bar1 bar2 #同时获得多个

    3,判断一个键是否存在

    EXISTS key 如果键存在则返回整数类型1,否则返回0,如:EXISTS bar

    4,对键重命名

    RENAME key new_key 对键值重新命名,如:RENAME foo foo1

    符号                                  含义

     ?                                    匹配一个字符

     *                                      匹配任意个(包括0个)字符

     []                                     匹配括号间的任一字符,可以使用“-”符号来表示范围

    \x                                     匹配字符x,\用于转义符号。如要匹配“?” 就需要使用\?

    5,设置key的过期时间

    (1),通过EXPIRE key seconds 来设置过期时间

    如:SET bar abd

    EXPIRE bar 1000

    (2),TTL 可以查看key还剩余的时间, -1表示永久, -2表示不存在

    如:TTL bar

    (3),PERSIST让键重新变成永久,成功返回1,否则返回0,表示键不存在或者本身就是永久的

    如:PERSIST bar 

    (4),通过SET key value EX seconds来设置过期时间,直接在设置key时就顺便设置了时间如:SET  bar 123 EX 2000,也可以SETEX key seconds value 来设置过期时间,如:SETEX bar 2000 123,

    6,获取键值的数据类型

    使用TYPE key 获取键值的数据类型,Redis 中有五种数据类型,因此返回也会有五种数据类型

    如:SET foo1

            TYPE foo

    7,删除键

    (1),DEL key[key....]可以删除一个或多个键,返回值时删除的键的个数

    如:DEL bar

    (2),DEL命令的参数不支持通配符,但我们可以结合linux的管道和xargs命令自己实现删除所有符合规则的键,比如要删除所有以user开头的键,就可以:¥redis-cli KEYS "user*" | xargs redis-cli DEL,而且由于DEL命令支持多个键作为参数,所以还可以:¥redis-cli DEL redis-cli KEYS "user*"这种方法比方法一更好一点。

    8,清空所有数据

    redis数据库之间并不是完全隔离的,FLUSHALL命令可以清空一个redis实例中所有数据库中的数据。


                                           数据类型

    一,字符串类型-string

    字符串是redis的基本数据类型,使用SET生成的键值对,其value就是字符串类型。字符串类型可以存储任何形式的字符串,

    SET num  1

    APPEND num  2  #添加字符

    #如果value值是数字,还可以进行加减,

    如INCR num #加1

       DECR num #减一

    #加整数

    INCRBY num 10

    #减整数

    DECRBY num 5

                                             列表-list

    1,添加元素:

    #LPUSH 左边添加(栈 先进后出)LPUSH myli  3 4 5 

    # RPUSH 右边添加(队列 先进先出)  RPUSH myli 2 1

    2,获取列表长度

    LLEN myli

    3,查看指定位置元素

    LINDEX myli 3

    4,获取列表片段

    LRANGE myli 0 5

    LRANGE myli 0 -1       -1表示最后一个

    5,弹出元素

    LPOP myli #从左边弹出元素

    RPOP myli#从右边弹出元素

    LREM key count value

    1,LREM myli 2 1 #当count>0时LREM命令会从列表左边开始删除前count个值为value的元素

    2,LREM myli -1 2 #  当count<0时LREM命令会从列表右边开始删除前|count|个值为value的元素

    3,LREM myli 0 4 #当count=0时LREM命令会删除所有值为value的元素


                                   哈希类型-hash

    散列类型不能嵌套其他的数据类型,一个散列类型键可以包含至多232-1个字段。

      设置和获取

    1,HSET key field value #设置

    如:HSET bd name budong,       HSET bd age 18

    2,HGET key field#获取

    如:HGET bd name

    3,HMSET key field value [field value ...]

    如:HMSET ks name kongshan age 18 #设置多个

    4,HMGET key field[field ...] #获取多个

    如:HMGET ks name age

    5,HKEYS bd #获取所有keys

    6,HVALS bd#获取所有value

    7,HGETALL key #获取所有key和value, 如:HGETALL bd 

    8,HLEN bd #获取filed个数

    判断字段是否存在

    HEXISTS key field

    HEXISTS bd size #存在返回1 不存在返回0

    HSETNX bd size 180 # 不存在是添加,存在什么也不做

    增加数字

    HINCRBY key field increment

    如:HINCRBY bd age 2

    删除字段

    HDEL key field[filed...] #删除一个或多个字段

    如:HDEL bd size


                                集合-set

    增,查,删元素

    1,SADD key member [member...]#增加元素

    如:SADD se1 1 2 3 a b    ,      SADD se2 a b c 1 2

    2,SREM key member [member ...]#删除元素

    如:SREM se1 2 #删除指定元素               SPOP key [cout] #随机删除count个元素 如:SPOP se2随机删除两个元素

    3,判断元素是否存在

    如:SISMEMBER se1 1 #

    4,SMEMBERS key #获取所有元素

    如:SMEMBERS se1

    5,SCARD key #获取集合元素个数

    如:SCARD se1

    随机获取count  个数元素count为正数,返回count个不重复数,为负数可能出现重复数据,

    交集

    SINTER key1 key2....

    如:SINTER key1 key2#求se1和se2交集

    SINTERSTORE destination key1 key2.....

    如SINTERSTORE se3 se1 se2#将交集保存到se3中

    并集

    SUNION key1 key2

    如:SUNION se1 se2

    SUNIONSTORE destination key1 key2

    如:SUNIONSTORE se4 se1 se2 #将并集保存在se4中

    差集

    SDIFF key1 key2

    如:SDIFF se1 se2

    SDIFFSTORE destination key1 key2

    SDIFFSTORE se5 se1 se2  # 将差集保存到se5中


    有序集合-zset

    增加,获取,删除元素

    1,ZADD key score member [score member ...]

    如:ZADD math 90 bd 86 ks 88 yf

    ZADD 可以用双精度浮点数,+inf表示正无穷 -inf表示负无穷

    2,ZCARD key

    ZCARD math #查看元素个数

    3,ZSCORE key member #获取元素分数

    如:ZSCORE math bd

    4,ZRANGE key start stop[WITHSCORES]  从小到大打印 加上WITHSCORES 同时打印分数,

    如:ZRANGE math 0 -1

    ZREVRANGE key start stop [WITHSCORES] #从小到大打印

    如:ZREVRANGE math 0 -1

    5,ZREM key member #移除元素

    如:ZREM math yf

    获取指定分数范围的元素

    ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

    按照元素分数从小到大的顺序返回分数在min和max之间(包含min和max)LIMIT 向后偏移offset个元素,并且只获取前count个元素。

    如:ZRANGEBYSCORE math 70 90

    ZRANGEBYSCORE math 70 (90 LIMIT 12#不取90

    获取指定分数范围的元素个数

    ZCOUNT key min max

    如:ZCOUNT math 70 90

    增加某个元素的分数

    ZINCRBY key increment member

    ZINCRBY math 5 bd  #增加5分,分数可以为负数,表示减分

    按照排名范围删除元素

    ZREMRANGEBYRANK key start stop

    ZADD test 1 a 2 b 3 c 4 d 5 e 

    ZREMRANGEBYRANK   test 0 2 #删除排名1到3的元素

    ZRANGE test 0 -1 

    按照分数范围删除元素

    ZREMRANGEBYSCORE key min max

    如:ZADD test 1 a 2 b 3 c 4 d 5 e 6 f

    ZREMRANGEBYSCORE test (3 5 #删除分数大于3小于5的元素

    计算有序集合的交集

    ZINTERSTORE destination numkeys key [key...][WEIGHTS weight[weight...]][AGGREGATE SUM|MIN|MAX]

    计算多个有序集合的交集并将结果存储在destination键中(同样以有序集合类型存储),返回值为destination键中的元素个数,destination键中元素的分数是由AGGREGATE参数决定的,默认是SUM

    ZADD s2 10 a 20 b

    ZINTERSTORE s3 2 s1 s2 #2是指有几个集合交集的意思,并集ZUNIONSTORE用法类似。

    五种数据类型

    string:SET APPEND

    list:LPUSH,LRANGE,LPOP,LREM

    hash:hset,hkeys,hdel

    set:SADD,SREM,SPOP,SMEMBERS,SINTER,SUNION,SDIFF

    ZSet:ZADD,ZRANGE,ZRANGEBYSCORE,ZCOUNT,

    相关文章

      网友评论

          本文标题:Nosql与Redis

          本文链接:https://www.haomeiwen.com/subject/mizevctx.html