Redis是一个BSD许可的、开源的,基于内存数据结构存储的数据库、缓存和消息中间件。 它支持各种数据结构,例如字符串,哈希,列表,集合,有序集合,位图,超文本和地理空间索引的半径查询等。 Redis内置了复制,Lua脚本,LRU管理机制,事务和分级别的磁盘持久性。Redis通过Redis Sentinel提供高可用性,通过Redis Cluster进行自动分区。
安装
Redis是用ANSI C编写的,可以在大多数POSIX系统中使用,比如Linux, BSD,OS X,而且没有外部依赖,建议部署在linux上。我们以Ubuntu 14.04 LTS 为例来简单介绍一下,没有依赖,所以安装很简单:
1
2 apt-get install update
apt-get install redis-server
从图上我们可以看到Redis已经启动了,而且Redis的默认端口是6379,安装在usr/bin/redis-server目录下。安装了redis服务端后,会自带安装一个命令行客户端程序 redis-cli,可以输入看看效果:
1
redis-cli
常用配置项
Redis服务器的配置文件是redis.conf,默认目录/etc/redis/下,常用的几个配置项: - requirepass ##修改密码。 - bind 127.0.0.1 ##ip地址,如果注释掉,其他电脑就可以访问了。 - port 6379 #端口 - logfile /var/log/redis/redis-server.log #日志目录和文件
开始使用
我们的示例基于python,所以我们安装一个python的支持包:
1
apt-get install python-redis
然后我们就可以看个python的小例子:
1
2
3
4
5
6import redis
'localhost', port=6379, db=0) r = redis.StrictRedis(host=
'foo', 'bar') r.set(
True
'foo') r.get(
'bar'
然后我们登陆下客户端看看情况。
1 | redis-cli |
可以看到列表中有foo。
一些基本的操作命令
1.String类型,处理各类字符,部分示例:
1 | 127.0.0.1:6379> set name tom //新增记录 |
2.Hash类型,Redis存储的是Hashmap,部分示例:
1
2
3
4
5
6
7
8
9
10127.0.0.1:6379> hset user1 name tom //新增HASH
127.0.0.1:6379> hget user1 name //获取HASH值
127.0.0.1:6379> hset user1 age 20
127.0.0.1:6379> hget user1 age
127.0.0.1:6379> hmset user1 sex famle city beijing //批量增加HASH值
127.0.0.1:6379> hgetall user1 //获取所有HASH字段和值
127.0.0.1:6379> hdel user1 city //删除某个字段127.0.0.1:6379> hgetall user1
3.List类型,实际上是一个双向链表,部分示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15127.0.0.1:6379> lpush users tom jackie jimi //加个多个元素到列表
127.0.0.1:6379> lrange users 0 -1 //输出全部
127.0.0.1:6379> lrange users 0 2 //输出列表3个
127.0.0.1:6379> lpushx users lucy //向列表头部添加lucy元素
127.0.0.1:6379> rpushx users mark //向列表尾部添加mark元素
127.0.0.1:6379> lrange users 0 -1
127.0.0.1:6379> lpop users //移除列表第一个元素
127.0.0.1:6379> rpop users //移除列表最后一个元素
127.0.0.1:6379> lrange users 0 -1
127.0.0.1:6379> llen users //列表长度
4.set类型,无序集合,部分示例。
1
2
3127.0.0.1:6379> sadd Uarrarys a b c d //添加a b c d到Uarrarys集合中
127.0.0.1:6379> smembers Uarrarys //Uarrarys集合的所有元素
127.0.0.1:6379> spop Uarrarys //Uarrarys集合中随机删除一个元素
5.sorted set类型,有序集合,每个成员必须关联一个float,redis通过它来为集合成员排序,部分示例。
1
2
3127.0.0.1:6379> zadd Sarrarys 0 a 1 b 2 c 3 d //添加a b c d到Sarrarys集合中
127.0.0.1:6379> zcard Sarrarys //Sarrarys集合的成员数量
127.0.0.1:6379> zrange Sarrarys 0 1 withscores
6.Pub/Sub,Redis订阅和发布实现了通讯系统。发布者发送信息,而接收者订阅它们。
- 在一个终端里先来订阅一下:
1
127.0.0.1:6379> subscribe mychat
- 再在另外一个终端发布一下看看:
1
127.0.0.1:6379>publish mychat "hello world!"
7.Transactions,事务是用来一次执行多个命令,一个事务中的所有命令作为单个独立的操作顺序执行。在Redis事务中的执行过程中不会被另一客户端发出的请求打断;Redis事务是原子的,这意味着要么所有的命令都执行,要么都不执行。
Redis事务由指令multi发起的,之后传递需要在事务中执行的命令,最后由exec命令执行所有命令,可以用discard取消事务。
1
2
3
4
5
6
7
8
9127.0.0.1:6379> multi
127.0.0.1:6379> lpush users tom jackie jimi //加个多个元素到列表
127.0.0.1:6379> lpushx users lucy //向列表头部添加lucy元素
127.0.0.1:6379> rpushx users mark //向列表尾部添加mark元素
127.0.0.1:6379> exec
127.0.0.1:6379> lrange users 0 -1
8.其他常用命令
1
2
3
4127.0.0.1:6379> ping #连接状态。
127.0.0.1:6379> config get maxclients #最大连接数值
127.0.0.1:6379> config get dir #配置文件位置
127.0.0.1:6379> save #备份,将在redis目录中创建一个dump.rdb文件。
想在线练习练习,可以直接用我们的免费课程:Redis入门