Redis(一)

Redis使用


参考 :http://www.jb51.net/article/56448.htm

一、介绍


redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。



二、.安装


下载地址:http://redis.io/download

在Linux中可以使用
$ wget http://download.redis.io/releases/redis-3.0.2.tar.gz
$ tar xzf redis-3.0.2.tar.gz
$ cd redis-3.0.2
$ make

会提示一个make test命令,不妨试试,保证make成功


三、使用


用一个终端运行

$ src/redis-server
它会有一些警告,建议按照警告来参照,解决这些警告,没有就更好了。

再开一个终端运行
$ ./redis-cli

1.字符串类型的key-value对


[root@localhost src]# ./redis-cli
127.0.0.1:6379> set hehe "haha"
OK
127.0.0.1:6379> get hehe
"haha"


字符串类型的用法就是这么简单,因为是二进制安全的,所以你完全可以把一个图片文件的内容作为字符串来存储。
另外,我们还可以通过字符串类型进行数值操作

127.0.0.1:6379> set num "10"
OK
127.0.0.1:6379> get num
"10"
127.0.0.1:6379> incr num
(integer) 11
127.0.0.1:6379> get num
"11"
127.0.0.1:6379> decr num
(integer) 10
127.0.0.1:6379> get num
"10"
127.0.0.1:6379> incrby num 3 
(integer) 13


由于INCR等指令本身就具有原子操作的特性,所以我们完全可以利用redis的INCR、INCRBY、DECR、DECRBY等指令来实现原子计数的效果。不少网站都利用redis的这个特性来实现业务上的统计计数需求。

2.lists类型


edis中的lists在底层实现上并不是数组,而是链表。

sts的常用操作包括LPUSH、RPUSH、LRANGE等。我们可以用LPUSH在lists的左侧插入一个新元素,用RPUSH在lists的右侧插入一个新元素,用LRANGE命令从lists中指定一个范围来提取元素
127.0.0.1:6379> lpush frank_list "2"
(integer) 1
127.0.0.1:6379> lpush frank_list "3"
(integer) 2
127.0.0.1:6379> lpush frank_list "8"
(integer) 3
//在mylist右侧插入元素"8"
127.0.0.1:6379> rpush frank_list "8"
(integer) 4
//返回当前mylist中的元素个数
//列出mylist中从编号0到编号2的元素
127.0.0.1:6379> lrange frank_list 0 2
1) "8"
2) "3"
3) "2"
//列出mylist中从编号1到编号2的元素
127.0.0.1:6379> lrange frank_list 1 2
1) "3"
2) "2"
//列出mylist中从编号0到倒数第一个元素
127.0.0.1:6379> lrange frank_list 0 -1
1) "8"
2) "3"
3) "2"
4) "8"
lists的应用相当广泛,随便举几个例子:

1.我们可以利用lists来实现一个消息队列,而且可以确保先后顺序,不必像MySQL那样还需要通过ORDER BY来进行排序。
2.利用LRANGE还可以很方便的实现分页的功能。
3.在博客系统中,每片博文的评论也可以存入一个单独的list中。



3.集合


redis的集合,是一种无序的集合,集合中的元素没有先后顺序。

集合相关的操作也很丰富,如添加新元素、删除已有元素、取交集、取并集、取差集等。
127.0.0.1:6379> sadd myset "one"
(integer) 1
127.0.0.1:6379> sadd myset "2"
(integer) 1
127.0.0.1:6379> sadd myset "3"
(integer) 1
//列出集合myset中的所有元素
127.0.0.1:6379> smembers myset
1) "3"
2) "2"
3) "one"
//判断元素1是否在集合myset中,返回1表示存在,返回0表示不存在
127.0.0.1:6379> sismember myset "one"
(integer) 1
127.0.0.1:6379> sismember myset "two"
(integer) 0
//我们新建一个集合来求并集
127.0.0.1:6379> sadd yourset "1"
(integer) 1
127.0.0.1:6379> sadd yourset "two"
(integer) 1
127.0.0.1:6379> sadd yourset "one"
(integer) 1
127.0.0.1:6379> sadd yourset "3"
(integer) 1
127.0.0.1:6379> smembers yourset
1) "3"
2) "1"
3) "one"
4) "two"
127.0.0.1:6379> sunion myset yourset
1) "1"
2) "one"
3) "3"
4) "2"
5) "two"

4. 有序集合


redis不但提供了无需集合(sets),还很体贴的提供了有序集合(sorted sets)。有序集合中的每个元素都关联一个序号(score),这便是排序的依据。

很多时候,我们都将redis中的有序集合叫做zsets,这是因为在redis中,有序集合相关的操作指令都是以z开头的,比如zrange、zadd、zrevrange、zrangebyscore等等
127.0.0.1:6379> zadd frank_zset 1 baidu.com
(integer) 1
127.0.0.1:6379> zadd frank_zset 3 360.com
(integer) 1
127.0.0.1:6379> zrange frank_zset 0 -1
1) "baidu.com"
2) "360.com"
127.0.0.1:6379> zrange frank_zset 0 -1 withscores
1) "baidu.com"
2) "1"
3) "360.com"
4) "3"
127.0.0.1:6379> zadd frank_zset 2 google.com
(integer) 1
127.0.0.1:6379> zrange frank_zset 0 -1 withscores
1) "baidu.com"
2) "1"
3) "google.com"
4) "2"
5) "360.com"
6) "3"

5.哈希


//建立哈希,并赋值
127.0.0.1:6379> HMSET user:001 username antirez password P1pp0 age 34
OK
//列出哈希的内容
127.0.0.1:6379> HGETALL user:001
1) "username"
2) "antirez"
3) "password"
4) "P1pp0"
5) "age"
6) "34"
//更改哈希中的某一个值
127.0.0.1:6379> HSET user:001 password 12345
(integer) 0
127.0.0.1:6379> hget user:001 age
"34"
//再次列出哈希的内容
127.0.0.1:6379> HGETALL user:001
1) "username"
2) "antirez"
3) "password"
4) "12345"
5) "age"
6) "34"

具体的命令可以查看 http://redis.io/commands






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值