什么是Redis
redis是远程的;
redis是基于内存的;
redis是非关系型数据库.
优点:
1.支持丰富的数据类型:String,List,Set,Sorted Set,Hash等
2.支持两种数据持久化方式:Snapshotting(内存快照)和Append-Only file(日志追加)
3.支持主从复制
Redis的应用场景
- 缓存
- 队列–使用list结构
- 数据存储
Redis数据类型
数据类型 | 存储的值 | 读写能力 |
---|---|---|
String | 可以是字符串,整数或者浮点,统称为元素 | 对字符串操作,对整数类型加减 |
List | 一个序列集合且每个节点都包好了一个元素 | 序列两端推入或弹出元素 |
Set | 各个不同的元素 | 从集合中插入或删除元素 |
Hash | 有key-value的散列组,其中key是字符串,value是元素 | 按照key进行增加删除 |
Sort Set | 带分数的score-value有序集合,其中score是浮点,value是元素 | 集合插入,按照分数范围查找 |
String
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17# key value(string/int/float)
127.0.0.1:6379> set string1 demo
OK
127.0.0.1:6379> get string1
"demo"
127.0.0.1:6379> set string2 4
OK
127.0.0.1:6379> get string2
"4"
127.0.0.1:6379> incr string2 #对整型进行自增操作
(integer) 5
127.0.0.1:6379> get string2
"5"
127.0.0.1:6379> decrby string2 2 #对整型进行减法操作,将string2减去2
(integer) 3
127.0.0.1:6379> get string2
"3"List类型
1
2
3
4
5
6
7
8
9
10
11
12
13
14127.0.0.1:6379> lpush list1 12 #lpush表示从左边push一个元素到list1中,l表示left
(integer) 1
127.0.0.1:6379> lpush list1 13
(interger) 2
127.0.0.1:6379> rpop list1 #rpop表示从右侧pop出一个元素,按照先入先出的原则
“12”
127.0.0.1:6379> lpush list2 12
(integer) 1
127.0.0.1:6379> lpush list2 13
(integer) 2
127.0.0.1:6379> lpush list2 13 #list类型不要求集合中的元素唯一,所以可以插入相同的元素,而set类型要求集合中元素必须唯一
(integer) 3
127.0.0.1:6379> llen list2 #llen命令列出list2中元素的个数
(integer) 3Set类型
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16127.0.0.1:6379> sadd set1 12
(integer) 1
127.0.0.1:6379> scard set1 #用scard查看set1中的元素个数
(integer) 1
127.0.0.1:6379> sadd set1 13
(integer) 1
127.0.0.1:6379> sadd set1 13
(integer) 0
127.0.0.1:6379> scard set1
(integer) 2
127.0.0.1:6379> sismember set1 13 #sismember 命令判断13是否在set1中
(integer) 1
127.0.0.1:6379> srem set1 13 #srem命令将13从set1中删除
(integer) 1
127.0.0.1:6379> sismember set1 13
(integer) 0Hash类型
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17127.0.0.1:6379> hset hash1 key1 12 #hset命令设置hash1的键为key1,值为12
(integer) 1
127.0.0.1:6379> hget hash1 key1 #hget命令获取hash1键名为key1的值
"12"
127.0.0.1:6379> hset hash1 key2 13
(integer) 1
127.0.0.1:6379> hset hash1 key3 13
(integer) 1
127.0.0.1:6379> hlen hash1 #hlen命令获取hash1的长度
(integer) 3
127.0.0.1:6379> hset hash1 key3 14 #直接修改hash1中key3的值
(integer) 0
127.0.0.1:6379> hget hash1 key3
"14"
127.0.0.1:6379> hmget hash1 key1 key2 #hmget 命令一次获取多个key的值
1) "12"
2) "13"Sort Set类型
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35127.0.0.1:6379> zadd zset1 10.1 val1 #zadd命令往zset1中添加一个元素,score为10.1,value为val1
(integer) 1
127.0.0.1:6379> zadd zset1 11.2 val2
(integer) 1
127.0.0.1:6379> zadd zset1 9.1 val3
(integer) 1
127.0.0.1:6379> zcard zset1 #zcard 命令查看zset1中的元素值
(integer) 3
127.0.0.1:6379> zrange zset1 0 2 withscores #zrange 命令打印出排名
1) "val3"
2) "9.1"
3) "val1"
4) "10.1"
5) "val2"
6) "11.19999999"
127.0.0.1:6379> zrange zset1 val2 #打印出val2的排名
(integer) 2
127.0.0.1:6379> zadd zset1 12.2 val3
(integer) 0
127.0.0.1:6379> zrange zset1 0 2 withscores
1) "val1"
2) "10.1"
3) "val2"
4) "11.19999999"
5) "val3"
6) "12.19999999"
127.0.0.1:6379> zadd zset1 12.2 val2
(integer) 0
127.0.0.1:6379> zrange zset1 0 2 withscores
1) "val1"
2) "10.1"
3) "val2"
4) "12.19999999"
5) "val3"
6) "12.19999999"
常用命令
键值相关命令
1 | // 1. keys *,代表取出所有的 key |
服务器相关命令
1 | // 1. ping 测试连接是否存活 |