redis总结
Redis是一个key-value存储系统。它支持存储value类型很多,包括String(字符串)、list(链表)、set(集合)、zset(有序集合)。这些数据类型都支持push/pop、add/remove以及取交集和并集及更丰富的操作,redis支持各种不同方式的排序。为了保证效率,数据都是缓存在内存中,它也可以周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。
Redis试用场景
- 取最新N个数据,排行榜应用,去topn操作
- 需要精确设定过期时间的应用
- 计数器应用
- Uniq操作,获取某段时间所有数据排重值
- 实时系统,反垃圾系统
- Pub/sub构建实时消息系统
- 构建队列系统(list堆或栈)
- 缓存
redis的五种数据类型的使用
-
string:key-value(做缓存)
Redis中所有的数据都是字符串,命令不区分大小写,key是区分大小写的
get
set
incr(自增)
decr(减一),
将字符串先转化为整形。Redis是单线程的。Redis中不适合保存内容大的数据。 -
Hash:key-fields-values(做缓存)
相当于一个key对应一个map,map中还有key、value,使用hash对key进行归类。
Hset:向hash中存数据
Hget向hash中存数据 -
list:有顺序可重复
Lput :向左边添加元素
Lpop:从左边弹出元素
Lrange list 0 -1 :查询所有的元素
Rput:从右边添加元素
Rpop:从右边弹出元素 -
set:无顺序,不能重复
192.168.25.128:6379> sadd set1 a b c d
(integer) 4
192.168.25.128:6379> smembers set1
1) “a”
2) “d”
3) “c”
4) “b”
192.168.25.128:6379> srem set1 a
(integer) 1
192.168.25.128:6379> smembers set1
1) “d”
2) “c”
3) “b”
还有集合的运算,交集并集 -
SortedSet(zset):有顺序,不能重复(可以做排行榜,每个元素有一个得分)
192.168.25.128:6379> zadd zset1 2 a 5 b 1 c 6 d
(integer) 4
192.168.25.128:6379> zrange zset1 0 -1
1) “c”
2) “a”
3) “b”
4) “d”
192.168.25.128:6379> zrem zset1 a
(integer) 1
192.168.25.128:6379> zrange zset1 0 -1
1) “c”
2) “b”
3) “d”
192.168.25.128:6379> zrevrange zset1 0 -1
1) “d”
2) “b”
3) " c "
192.168.25.128:6379> zrevrange zset1 0 -1 withscores
可以带分数的查询
Redis 键值相关命令
1. Keys * 查询所有的键
2. Keys my* 模糊匹配
3. Exists 判断某个键是否存在,返回0代表不存在,返回1 代表存在
4. Del 删除一个key
5. Expire设置一个key的过期时间
6. Ttl查询某个key还有多少时间过期
7. Select选择数据库,如selet 0 redis数据库编号从0到15
8. Move将当前数据库中的key转移到其他数据库中
9. Persist 移除给定key的过期时间
10. Randomkey 随机返回key空间的一个key
11. Rename 重命名key
12. Type 返回键的类型
13. Ping 是否连接到服务器
14. Echo 在命令行打印一些内容
15. Quit/exit退出连接
16. Dbsize 当前数据库下键的个数
17. Flushdb删除当前选择数据库中的所有key
18. Flushall 删除所有数据库中的所有键
Redis高级实用特性
- 安全性
在配置文件中设置密码即可redis.conf,然后重启服务
- 主从复制
- 事务处理
Redis对事务的支持不是很好,若队列中有多条命令,且存在一个错误的命令,事务不会回滚。
- 持久化机制
Redis可以持久化到数据库
Rdb默认的方式,快照
Append-onlyfile (aof)的方式
Aof是每秒写入增删改命令,所以比较好性能,默认是关闭的。 - 发布订阅消息
- 虚拟内存的使用