Redis 解析以及一些常用命令
概述
redis 是一种支持分布式的 nosql数据库,她的数据是保存在内存中,同时redis 可以定时把数据同步到磁盘,既可以将数据持久化,并且他比memcached支持更多的数据结构(string, list, set, sorted set, hash表 )
相关参考文档 http://redisdoc.com/index.html
使用场景
1.登陆会话存储,存储在redis中,与memchached相比,数据不会丢失。
2.排行榜、计数器,例如文章点击量、点赞数等。
3.作为消息队列,celery使用redis作为中间人
4.当前在线人数
5.一些常用的数据库缓存,比如bbs论坛,板块不会经常变化,但是每次访问首页都要从mysql中获取,可以在 redis中缓存起来,不用每次都请求数据库。
6.把前200篇文章缓存或评论缓存,一般用户浏览网站,只会浏览前面一部分文章或者评论,那么可以把前面200篇文章和对应的评论缓存起来,用户访问超过的,就访问数据库,并且以后文章超过200篇,就把之前缓存在redis数据库的文章删除一部分
7.好友关系:微博的好友关系使用redis实现。
8.发布和订阅功能,可以用来做聊天软件。
redis 和memcached比较
memcached | redis |
---|---|
纯内存数据库 | 内存磁盘同步数据库 |
在定义value的时候要固定数据类型 | 不需要固定数据类型 |
不支持虚拟内存 | 支持虚拟内存 |
支持过期策略 | 支持过期策略 |
不支持存储数据安全 | 可以将书同步到dump.db中 |
不支持灾难恢复 | 可以将磁盘中的数据恢复到内存中 |
支持分布式 | 支持主从同步 |
不支持订阅与发布 | 支持订阅与发布 |
语法部分
字符串操作
设置attr 的值为1 过期时间60秒
set attr 1 EX 60
查看过期时间
ttl sttr
(integer) 16 # 还剩16秒过期
设置过期时间 (30秒后过期)
expire attr 30
查看所有键值对
keys *
删除键值对
del attr #键名
列表操作
从左侧插入列表
lpush website baidu.com
从右侧插入列表
rpush website google.com
查看列表(从第一个到最后一个)
lrange website 0 -1
1)“baidu.com”
2)“google.com”
移除website
列表头元素
lpop website
移除website
尾元素
rpop website
移除key
中的count
个元素
lrem key count value
Irem website 1 baidu.com #移除列表中的一个baidu.com 元素
查看列表长度
llen website
集合操作
与列表的不同:
1.集合是无序额
2.集合保存同一个元素只能保存一份
插入数据(若集合不存在会自动创建)
sadd key member
sadd team duiyuan1
查看集合元素
smemebers 集合名
smemebers team
移除元素
screm 集合名 元素名
screm team yaoming
查看元素总数
scard 集合名
scard team
求多个集合交集
sinter set1 set2
求多个集合并集
sunion set1 set2
求多个集合差集
sdiff set1 set2
哈希操作
相当于python中的字典,key —value 形式
添加一个新值
hset field key value
例如:
hset website baidu baidu.com
查询值
hget