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,
网友评论