0%

Redis学习笔记

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
# coding:utf-8
import redis

# lredis-server保持开启状态 如果在客户端设置了密码 添加password=密码即可
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')
# 列表
# 注意python、lrange两个range的范围
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