环境: 虚拟机  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:用于本地数据库检查



Src目录下的redis-server和redis-cli两个命名就是redis服务端和客户端的应用程序,这两个命令可以直接调用,建议直接复制到用户bin目录下,以方便调用:



# cp src/redis-* /usr/local/bin/



 



三、配置文件的配置  才可以参考其他



 



四、启动



redis-server /etc/redis.conf  启动,使用redis     



ps -ef | grep redis  查看是否启动



如有以下信息说明启动成功:



root 7949 1 0 11:47 ? 00:00:00 redis-server /etc/redis.conf  



 



测试命令:



[root@localhost redis-2.6.11-rc5]# redis-cli set test "123456"



OK



[root@localhost redis-2.4.0-rc5]# redis-cli get test



"123456"  



 



 五,关闭redis  



# redis-cli shutdown       //关闭所有 关闭某个端口上的redis



# redis-cli -p 6397 shutdown   //关闭6397端口的redis




Reids 中 数据结构

有序的序列  

redis数据库跟新数据 redis数据库使用_redis数据库跟新数据



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”

删除主键的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