特点
是一种数据库,key-value存储系统
可基于内存亦可持久化的日志型,解决了断电后数据完全丢失的情况
它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。
对比Memcached
存储数据安全–memcache挂掉后,数据没了;redis可以定期保存到磁盘(持久化);
memcache还可用于缓存其他东西,例如图片、视频等等
扩展:redis和memcached的区别(总结)
扩展:Redis与Memcached的区别
Redis配置
Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf。
redis 127.0.0.1:6379> CONFIG GET/SET CONFIG_SETTING_NAME
扩展:菜鸟教程http://www.runoob.com/redis/redis-conf.html
数据类型
String(字符串)
key-“…”
二进制安全、512M
扩展:什么是二进制安全——只关心二进制化的字符串,不关心具体格式.只会严格的按照二进制的数据存取。不会妄图已某种特殊格式解析数据。(意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。)
set name 'lxn' # name是key,‘lxn’是value
get name
字符串命令
http://www.runoob.com/redis/redis-strings.html
Hash(哈希)
key: field1-value, field2-value,..、每个 hash 可以存储 2的32次方 -1 键值对
HMSET user:1 username runoob password runoob points 200 # hash many set
HGETALL user:1 hash get all
# user:1是key,username runoob password runoob points 200是集合(无序)
List(列表)
key-[…., …, …]
Redis 列表是简单的字符串列表,按照插入顺序排序。
你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
一个list可存储 2的32次方 - 1 元素
lpush runoob redis #runoob是key redis要左加入list的值
lrange runoob 0 10 #左取runoob(key)对应的list
Set(集合)
key-{…, …, …}
string类型的无序集合、唯一、集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)
sadd key member # 加
members key # 取
zset(sorted set:有序集合)
key-{…, …, …} 按score排序
string类型元素的有序集合,且不允许重复的成员。
每个元素都会关联一个double类型的分数score。redis正是通过分数来为集合中的成员进行从小到大的排序。(score值可以重复)
zadd key score member # member存在则跟新score
ZRANGEBYSCORE runoob 0 1000
其他
执行
resdis-server
redis-cli -h host -p port -a password
ping # 检测 redis 服务是否启动(pong)
键命令
http://www.runoob.com/redis/redis-keys.html
命令猜测
get
set
m : many 会出现列表
range: 会有start end 包含两头
bit:位,key后边紧跟offset
EX:过期,key后边紧跟
nx:不存在时才执行
strlen:长度
p:毫秒
incr:值增加1
incrby:key后边会有一个值
float:浮点
decr:减一
decrby:
append:追加字符串
通用
redis数据库:默认0~15,可配置个数,切换命令select index
redis端口:6379
应用
注意redis的返回值:int,list,None,bool,1/0,
rs = App.get_rs(‘rs_activity’) 选择数据库index
score = rs.zscore(rs_quiz_billboard_daily, user_id)
int(rs.hget(cls.RS_SITE_D_CONF, now_h_m_str) or 0) key不存在时返回None