美文网首页
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