Redis简介
Redis 是一个高性能的key-value数据库。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)、Hash(哈希类型的映射表)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。
Redis下载安装
下载地址:https://github.com/microsoftarchive/redis/releases
RedisDesktopManager-Windows(Redis图形化管理界面):https://github.com/necan/RedisDesktopManager-Windows/releases
Redis数据库导入/导出:Windows 下 RedisDump 的安装 | YouForever
安装完成后将路径(如我的为D:\Program Files\Redis
)添加到环境变量中。
Redis命令
Redis客户端:redis-cli
默认连接本地redis。
连接远程redis服务器:redis-cli -h host -p port -a password
Redis数据类型
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
String(字符串)
string是redis最基本的数据类型,一个key对应一个value。string类型是二进制安全的,可以包含任何数据,最大可存储512M。
1 2 3 4
| 127.0.0.1:6379> SET name 'runoob' OK 127.0.0.1:6379> GET name "runoob"
|
Hash(哈希)
Redis hash是一个键值对集合,是一个string类型的field和value的映射表,适合用于存储对象。
1 2 3 4 5 6
| 127.0.0.1:6379> HMSET runoob field1 "hello" field2 "world" OK 127.0.0.1:6379> HGET runoob field1 "hello" 127.0.0.1:6379> HGET runoob field2 "world"
|
List(列表)
Redis列表是简单的字符串列表,是有序的。
1 2 3 4 5 6 7 8 9 10 11 12
| 127.0.0.1:6379> DEL runoob (integer) 1 127.0.0.1:6379> lpush runoob redis (integer) 1 127.0.0.1:6379> lpush runoob mongodb (integer) 2 127.0.0.1:6379> lpush runoob rabitmq (integer) 3 127.0.0.1:6379> lrange runoob 0 2 1) "rabitmq" 2) "mongodb" 3) "redis"
|
Set(集合)
Redis的Set是string类型的无序列表。使用sadd
添加一个string元素到set集合中,成功返回1,如果key对应的set不存在则返回错误。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 127.0.0.1:6379> DEL runoob (integer) 1 127.0.0.1:6379> sadd runoob redis (integer) 1 127.0.0.1:6379> sadd runoob mongodb (integer) 1 127.0.0.1:6379> sadd runoob rabitmq (integer) 1 127.0.0.1:6379> sadd runoob rabitmq (integer) 0 127.0.0.1:6379> smembers runoob 1) "redis" 2) "rabitmq" 3) "mongodb"
|
zset(sorted set:有序集合)
将Set中的元素增加一个权重参数score,元素按score有序排列,zset的成员是唯一的,但分数(score)却可以重复。
zadd命令:添加元素到集合,若元素在集合中则更新对应的score。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 127.0.0.1:6379> DEL runoob (integer) 1 127.0.0.1:6379> zadd runoob 0 redis (integer) 1 127.0.0.1:6379> zadd runoob 0 mongodb (integer) 1 127.0.0.1:6379> zadd runoob 0 rabitmq (integer) 1 127.0.0.1:6379> zadd runoob 0 rabitmq (integer) 0 127.0.0.1:6379> ZRANGEBYSCORE runoob 0 1000 1) "mongodb" 2) "rabitmq" 3) "redis"
|
Python操作Redis的简单实例
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
| import redis
pool = redis.ConnectionPool(host='127.0.0.1', port=6379, db=0) r = redis.StrictRedis(connection_pool=pool)
r.set('test', 'aaa') print r.get('test')
x = 0 for x in range(0, 11): r.lpush('list', x) x = x + 1 print r.lrange('list', '0', '10')
dict_hash = {'name': 'tang', 'password': 'tang_passwd'} r.hmset('hash_test', dict_hash) print r.hgetall('hash_test')
r.sadd('set_test', 'aaa', 'bbb') r.sadd('set_test', 'ccc') r.sadd('set_test', 'ddd') print r.smembers('set_test')
r.zadd('zset_test', {'aaa': 1, 'bbb': 1}) r.zadd('zset_test', {'ccc': 1}) r.zadd('zset_test', {'ddd': 1}) print r.zrange('zset_test', 0, 10)
|
参考:Redis 教程 | 菜鸟教程
Redis - Wikiwand