redis
文章目录
redisredis基本知识RDBMS和NoSQL的区别分布式集群分布式数据库中的CAP和BASECAPBASE
Key
Redis5种数据类型String(字符串)(一key单value)set(集合) (无序且唯一 一key多value)hash(哈希)(一key多value)list(列表)(字符串链表)(一key多value)Zset(有序集合)(sorted set)
redis基本知识
redis:一种分布式的内存数据库缓存
NoSQL : Not Only SQL “不仅仅是SQL” 泛指非关系型数据库
单进程
redis默认16个库,下表从开始,初始化使用0号库
大数据时代的三V :Volume(海量) Variety(多样) Velocity(实时)
互联网三高:高可用(高并发) 高扩展 高性能
RDBMS和NoSQL的区别
RDBMS:高度组织化结构化的数据
结构化查询语言(SQL)
数据操纵语言,数据定义语言
严格的一致性
基础事务
NoSQL:代表的不仅仅是SQL
没有声明性查询语言
没有预定义的模式
键值存储 文档存储 列存储 图形存储
最终一致性而非ACID属性
非结构化和不可预知的数据
CAP属性
高性能 高可用 可伸缩性
分布式
不同的多台服务器上面部署不同的服务模块(工程),他们之间通过RPC(Remote Procedure Call 远程过程调用)/RMI之间通信和调用,对外提供服和组内协作
集群
不同的多台服务器上面部署相同的服务模块,通过分布式调度软件进行统一的调度,对外提供访问和服务
分布式数据库中的CAP和BASE
CAP
C:Consistency(强一致性)A:Availability(可用性)P:Partition tolerance(分区容错性)
BASE
基本可用(Basically Available)软状态(Soft State)最终一致(Eventually Consistent)
Key
set k1 v1
set k2 v2
get k1
get k2
set k1 value1
move k1
2;
exists k1
expire k1
10
ttl k1
type k
dbsize 查看当前数据库的key数量
flushdb 清空当前库
flushall 清空所有的库
keys * 查看当前库的所有的键
keys k? 查看当前库中以k 开头的键
select index(0~15) 选择库
Redis5种数据类型
String(字符串)(一key单value)
string是redis最基本的类型,一个key对应一个value string是二进制安全的,redis的string可以包含任何数据,一个redis的string的value最多可以是512M
del k1
append k1 value
strlen k1
k的值一定要为数字类型
incr k1
decr k1
incrby k1
2
decrby k1
2
set k abcdefg
;
GETRANGE k
0 3;
SETRANGE k
0 ABCD
;
get k
;
setex k
10 v
;
=>
set k v
;
expire k
10;
setnx k
10 v
;
mset k1 v1 k2 v2 k3 v3
mget k1 k2 k3
msetnx k1 v1 k5 v5
set(集合) (无序且唯一 一key多value)
sadd set
1 2 1 2 3 3
smember set
=>
1) "1"
2) "2"
3) "3"
sismember set
9
scard set
SREM set
1
SRANDMEMBER set
5
spop set
smove set1 set2 value
sdiff set set1
sinter set set1
sunion set set1
hash(哈希)(一key多value)
hset student name
"jack"
hget student name
hmset student name
"jack age 21"
hmget student name age
hgetall student
HDEL student age
hlen student
HEXISTS student age
HKEYS student
HVALS student
HINCRBY student age
2
HINCRBYFLOAT student age
3.0
HSETNX student number
1
list(列表)(字符串链表)(一key多value)
Lpush list
1 2 3 4 5
Lrange list
0 -1
=>
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
Lpop list
Rpop list
Rpush list
1 2 3 4 5
Lrange list
0 -1
=>
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
Lpop list
Rpop list
Lindex list
2
llen list
LREM list
3 4
lpush list
1 2 3 4 5 6 7 8
LTRIM list
0 5
LRANGE list
0 -1
= >
1) "8"
2) "7"
3) "6"
4) "5"
5) "4"
6) "
3
rpush list1
4 5 6 7
rpush list2
1 2 3
rpoplpush list1 list2
lrange list2
0 -1
= >
1) "7"
2) "1"
3) "2"
4) "3"
LSET list2
0 9
1) "9"
2) "1"
3) "2"
4) "3"
LINSERT list2 before
/after
9 10
Zset(有序集合)(sorted set)
zadd zset
1 v1
2 v2
3 v3
zrange zset
0 -1
=>
1) "v1"
2) "v2"
3) "v3"
ZREVRANGE zset
0 -1
=>
1) "v2"
2) "v1"
zrange zset
0 -1 withscores
=>
1) "v1"
2) "1"
3) "v2"
4) "2"
5) "v3"
6) "3"
ZRANGEBYSCORE zset
2 3
=>
1) "v2"
2) "v3"
ZRANGEBYSCORE zset
2 (3 "(" 不包括xiabi
=>
1) "v2"
ZRANGEBYSCORE zset
2 3 limit
0 1
=>
1) "v2"
ZREM zset v3
=>
1) "v1"
2) "v2"
ZCARD zset
=>
(integer
) 2
ZCOUNT zset
1 2
=>
(integer
) 2
ZRANK zset v2
=>
(integer
) 1
ZSCORE zset v1
=>
"1"
ZREVRANK zset v2
"0"
ZREVRANGEBYSCORE zset
2 1