Redis 数据库 安装与使用
环境: 虚拟机 linux系统 (CentOs)
Redis本质上一个Key/Value数据库,与Memcached类似的NoSQL型数据库,但是他的数据可以持久化的保存在磁盘上,解决了服务重启后数据不丢失的问题,他的值可以是string(字符串)、list(列表)、sets(集合)或者是ordered sets(被排序的集合),所有的数据类型都具有push/pop、add/remove、执行服务端的并集、交集、两个sets集中的差别等等操作,这些操作都是具有原子性的,Redis还支持各种不同的排序能力
一、 下载redis最新版本2.2.14
cd /usr/local/src //进入 src 文件夹
wget –c http://redis.googlecode.com/files/redis-2.6.11.tar.gz
二、 编译安装redis
tar zxvf redis-2.2.14.tar.gz //解压
cd redis-2.2.14
make
make命令执行完成后,会在src目录下生成5个可执行文件,分别是redis-server、redis-cli、redis-benchmark、redis-check-aof、redis-check-dump,它们的作用如下: redis-server:Redis服务器的daemon启动程序
redis-cli:Redis命令行操作工具。当然,你也可以用telnet根据其纯文本协议来操作
redis-benchmark:Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能
redis-check-aof:更新日志检查
redis-check-dump:用于本地数据库检查
Reids 中 数据结构
Zset 有序的序列
String 存储
$ redis-cli set mykey "my binary safe value" OK $ redis-cli get mykey 通常用SET command 和 GET command来设置和获取字符串值。 值可以是任何种类的字符串(包括二进制数据),例如你可以在一个键下保存一副jpeg图片。值的长度不能超过1GB。
List存储
LPUSH 命令可向list的左边(头部)添加一个新元素,而RPUSH命令可向list的右边(尾部)添加一个新元素。最后LRANGE 命令可从list中取出一定范围的元素
$ redis-cli rpush messages "Hello how are you?"
OK
$ redis-cli rpush messages "Fine thanks. I‘m having fun with Redis"
OK
$ redis-cli rpush messages "I should look into this NOSQL thing ASAP"
OK
$ redis-cli lrange messages 0 2
1. Hello how are you?
2. Fine thanks. I‘m having fun with Redis
3. I should look into this NOSQL thing
LSET key index value 设置索引下的值
LREM key count value 从列表中删除元素
LLEN key 获得队列(List)的长度
Hash 存储
操作结构化数据:
redis > HSET tech:dep sa 10
(integer) 1
redis > HGETALL tech:dep
1) "sa"
2) "10"
edis > hget tech:dep sa
1) “10”
Redis> hdel tech:dep sa 删除主键的yield 的值。
Set 存储
SADD key member [member ...]添加一个或者多个元素到集合(set)里
$ SADD user:movid:fid 1001 1 2 3 4 批量增加四个ID
SPOP key 删除并获取一个集合里面的元素 删除最后插入的元素
$SPOP user:moveid:fid 只剩下 1 、2 、3
SREM key member [member ...]从集合里删除一个或多个member
$SREM user:moveid:fid 2 从集合中删除 元素 2
Zset 存储 (根据 Score 进行排序 )
ZADD key score member [score member ...] 添加到有序set的一个或多个成员,或更新的分数,如果它已经存在
redis> ZADD myzset 1 "one"(integer) 1
redis> ZADD myzset 2 "two"(integer) 1
redis> ZCARD myzset(integer) 2
ZREM key member [member ...]从排序的集合中删除一个或多个成员
redis> ZREM myzset "two"(integer) 1
redis> ZRANGE myzset 0 -1 WITHSCORES
1) "one" 2) "1"
数据库的选择 (默认的 0 数据库)
选择的时候为 select 0;select 1; ...
键的选择
KEYS pattern查找所有匹配给定的模式的键
redis> MSET one 1 two 2 three 3 four 4
OK
redis> KEYS *o* 包含o的主键
1) "four"
2) "one"
3) "two"
redis> KEYS t?? T开头的主键
1) "two"
redis> KEYS * 所有主键
1) "four"
2) "three"
3) "one"
4) "two"
数据库实例
Set global:nextUserId 1000 //用户标的全局标示,用来自增
INCR global:nextUserId => 1001
SET uid:1001:username “昵称12”
SET uid:1001:password 123456 用户信息
INCR global:nextUserId => 1002
SET uid:1001:username “昵称23”
SET uid:1001:password 654321 用户信息
uid:1001:friends => Set of uids of all the followers users 1001用户的好友 <set>
uid:1001:friending=> Set of uids of all the following users 添加1001用户的好友 <set>
单方添加
SADD uid:1001:friends 1002
SADD uid:1002:friending 1001 1001主动加1002好友,并同意,但1002未添加1001为好友
SADD uid:1001:friends 1003
SADD uid:1003:friending 1001
双向 执行两次此操作,ID位置互换
查询
SMEMBERS uid:1001:friends 查询所有好友
=>返回所有用户的ID
SISMEMBER uid:1001:friends 1004 查询1004 是不是是否在1001的好友列表中
如果存在 返回 1 ,不存在返回 0
SREM uid:1001:friends 1003 [1003 1004 1005]
将1003 [1003 1004 1005]从 1001的好友中删除;返回执行成功的数目
2013-03-28 16:10:57
参考