Redis特点:
1、速度快
2、支持丰富的数据类型:字符串、哈希列表、集合
3、操作具有原子性,所有Redis操作都是原子操作
4、多实用工具,可应用如缓存,消息队列,应用程序中任何短期数据,如web中会话,网页命中计算
Redis有专用命令管理键,包括有设置过期时间,判断是否存在,转移,查找类型等
键的形式:表名:主键名:列名
应用场景
Redis作缓存系统
Redis可以对每个键设置生存时间
可以限定数据占用的最大内存空间,在数据达到空间限制后可以按照一定规则自动淘汰不需要的键。
设置方法: 修改配置文件的maxmemory参数,限制Redis最大可用内存大小(单位是字节),当超出了这个限制时Redis会依据maxmemory-policy参数指定的策略来删除不需要的键直到Redis占用的内存小于指定内存.
Redis作队列
列表类型键可以用来实现队列,并支持阻塞时读取,可以很容易地实现一个高性能的优先级队列。
Redis数据类型
1、string类型
常用命令: set,get,decr,incr,mget 等
基本操作列表:
GET | 获取指定键对应的值 |
SET | 设定键值 |
DEL | 删除指定键对应的值(对所有数据类型都有效) |
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
"world"
127.0.0.1:6379> del hello
(integer) 1
127.0.0.1:6379> del hello
(integer) 0
127.0.0.1:6379> get hello
(nil)
127.0.0.1:6379>
2、list类型
常用命令:lpush,rpush,lpop,rpop,lrange等
基本操作列表:
RPUSH | 从列表的右侧压入数据 |
LRANGE | 从列表中获取指定范围内的数据 |
LINDEX | 根据给定的下标获取列表中的值 |
LPOP | 从列表的左侧弹出数据并返回 |
127.0.0.1:6379> rpush list item1
(integer) 1
127.0.0.1:6379> rpush list item2
(integer) 2
127.0.0.1:6379> rpush list item3
(integer) 3
127.0.0.1:6379> lrange list 0 -1
1) "item1"
2) "item2"
3) "item3"
127.0.0.1:6379> lindex liat 1
(nil)
127.0.0.1:6379> lindex list 1
"item2"
127.0.0.1:6379> lindex list 0
"item1"
127.0.0.1:6379> lpop list
"item1"
127.0.0.1:6379> lrange list 0 -1
1) "item2"
2) "item3"
127.0.0.1:6379>
3、set(无序)类型
常用命令:sadd,spop,smembers,sunion 等
基本操作列表:
SADD | 向集合中添加数据 |
SMEMBERS | 返回集合中所有的数据 |
SISMEMBER | 检测给定的值在集合中是否存在 |
SREM | 如果给定的值存在,从集合中删除该值 |
127.0.0.1:6379> sadd setkey item
(integer) 1
127.0.0.1:6379> sadd setkey item1
(integer) 1
127.0.0.1:6379> sadd setkey item2
(integer) 1
127.0.0.1:6379> sadd setkey item3
(integer) 1
127.0.0.1:6379> sadd setkey item4
(integer) 1
127.0.0.1:6379> smembers setkey
1) "item1"
2) "item"
3) "item3"
4) "item2"
5) "item4"
127.0.0.1:6379> sismember setkey item4
(integer) 1
127.0.0.1:6379> sismember setkey item5
(integer) 0
127.0.0.1:6379> srem setkey item
(integer) 1
127.0.0.1:6379> sismember setkey item
(integer) 0
127.0.0.1:6379>
4、hash类型
常用命令:hget,hset,hgetall 等
基本操作列表:
HSET | 基于给定的键值存储哈希值 |
HGET | 基于给定的键值获取哈希值 |
HGETALL | 获取所有的哈希值(包括键也会一并返回) |
HDEL | 如果给定的键存在,删除该键对应的哈希值 |
127.0.0.1:6379> hset hashkey subkey1 item1
(integer) 1
127.0.0.1:6379> hset hashkey subkey2 item2
(integer) 1
127.0.0.1:6379> hset hashkey subkey3 item3
(integer) 1
127.0.0.1:6379>
127.0.0.1:6379> hgetall hashkey
1) "subkey1"
2) "item1"
3) "subkey2"
4) "item2"
5) "subkey3"
6) "item3"
127.0.0.1:6379> hdel hashkey subkey2
(integer) 1
127.0.0.1:6379> hdel hashkey subkey2
(integer) 0
127.0.0.1:6379> hget hashkey subkey2
(nil)
127.0.0.1:6379> hget hashkey subkey1
"item1"
127.0.0.1:6379> hgetall hashkey
1) "subkey1"
2) "item1"
3) "subkey3"
4) "item3"
127.0.0.1:6379>
5、zset(有序)类型
常用命令:zadd,zrange,zrem,zcard等
基本操作列表:
ZADD | 根据给定的排序(score)向有序集合添加数据 |
ZRANGE | 从有序集合中获取排序好的数据 |
ZRANGEBYSCORE | 基于指定范围的排序值获取数据 |
ZREM | 如果给定的键存在,删除该键对应的数据 |
127.0.0.1:6379> zadd zsetkey 728 member1 (integer) 1 127.0.0.1:6379> zadd zsetkey 982 member2 (integer) 1 127.0.0.1:6379> zadd zsetkey 982 member2 (integer) 0 127.0.0.1:6379> zadd zsetkey 983 member2 (integer) 0 127.0.0.1:6379> zadd zsetkey 983 member3 (integer) 1 127.0.0.1:6379> zrange zsetkey 0 -1 1) "member1" 2) "member2" 3) "member3" 127.0.0.1:6379> zrange zsetkey 0 -1 withscores 1) "member1" 2) "728" 3) "member2" 4) "983" 5) "member3" 6) "983" 127.0.0.1:6379> zrangebyscore zsetkey 0 800 withscores 1) "member1" 2) "728" 127.0.0.1:6379> zrange zsetkey 0 800 withscores 1) "member1" 2) "728" 3) "member2" 4) "983" 5) "member3" 6) "983" 127.0.0.1:6379> zrem zsetkey member1 (integer) 1 127.0.0.1:6379> zrem zsetkey member1 (integer) 0 127.0.0.1:6379> zrange zsetkey 0 -1 withscores 1) "member2" 2) "983" 3) "member3" 4) "983" 127.0.0.1:6379>
6、HyperLogLog
可以非常省内存去统计各种计数,但无法知道统计详细内容
7、发布订阅
消息通信模式,发送者(pub)发送消息,订阅者(sub)接收消息