redis_1

2016-06-08  本文已影响34人  738bc070cd74

启动

启动服务端

./redis-server

指定要加载的配置文件

./redis-server ../redis.conf

默认情况下,redis-server会以非daemon的方式来运行,且默认服务端口为6379。

启动客户端

./redis-cli

//用set指令来设置key、value

127.0.0.1:6379> set name "roc" OK

//来获取name的值

127.0.0.1:6379> get name "roc"

//通过客户端来关闭redis服务端

127.0.0.1:6379> shutdown 
127.0.0.1:6379>

数据结构

redis是一种高级的key:value存储系统,其中value支持五种数据类型:
1.字符串(strings)
2.字符串列表(lists)
3.字符串集合(sets)
4.有序字符串集合(sorted sets)
5.哈希(hashes)
而关于key,一下几点需要注意:
1.key不要太长,尽量不要超过1024字节,这不仅消耗内存,而且会降低查找的效率;
2.key也不要太短,太短的话,key的可读性会降低;
3.在一个项目中,key最好使用统一的命名模式,例如user:10000:passwd。

字符串

strings类型是一个很基础的数据类型

set mystr "hello world!" //设置字符串类型
get mystr //读取字符串类型

字符串可以进行数值操作

incr_num.png

在遇到数值操作时,redis会将字符串类型转换成数值。由于INCR等指令本身就具有原子操作的特性,所以我们完全可以利用redis的INCR、INCRBY、DECR、DECRBY等指令来实现原子计数的效果

list

redis中的lists在底层实现上并不是数组,而是链表。对于一个具有上百万个元素的lists来说,在头部和尾部插入一个新元素,其时间复杂度是常数级别的,比如用LPUSH在10个元素的lists头部插入新元素,和在上千万元素的lists头部插入新元素的速度应该是相同的。链表型lists的元素定位会比较慢,而数组型lists的元素定位就会快得多。

lists的常用操作包括LPUSH、RPUSH、LRANGE等。我们可以用LPUSH在lists的左侧插入一个新元素,用RPUSH在lists的右侧插入一个新元素,用LRANGE命令从lists中指定一个范围来提取元素。

127.0.0.1:6379> lpush tlist "1"
(integer) 1
127.0.0.1:6379> rpush tlist "2"
(integer) 2
127.0.0.1:6379> lpush tlist "0"
(integer) 3
127.0.0.1:6379> lrange tlist 0 1
1) "0"
2) "1"
127.0.0.1:6379> lrange tlist 0 -1
1) "0"
2) "1"
3) "2"
127.0.0.1:6379> 

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

set

redis的集合,是一种无序的集合。集合相关的操作也很丰富,如添加新元素、删除已有元素、取交集、取并集、取差集等

127.0.0.1:6379> sadd tset "one"
(integer) 1
127.0.0.1:6379> sadd tset "two"
(integer) 1
127.0.0.1:6379> smembers tset
1) "one"
2) "two"
127.0.0.1:6379> sismember tset "one"
(integer) 1
127.0.0.1:6379> sismember tset "one1"
(integer) 0
127.0.0.1:6379> 
sunion tset tset  //求并集

zset

有序集合(sorted sets)。有序集合中的每个元素都关联一个序号(score),这便是排序的依据。我们都将redis中的有序集合叫做zsets,这是因为在redis中,有序集合相关的操作指令都是以z开头的,比如zrange、zadd、zrevrange、zrangebyscore等等

127.0.0.1:6379> zadd tzset 1 "baidu"
(integer) 1
127.0.0.1:6379> zadd tzset 3 "360"
(integer) 1
127.0.0.1:6379> zrange tzset 0 -1
1) "baidu"
2) "360"
127.0.0.1:6379> zrange tzset 0 -1 withscores 
1) "baidu"
2) "1"
3) "360"
4) "3"
127.0.0.1:6379> 

hash

用于处理对象数据

127.0.0.1:6379> hmset user:001 username huben password 123456
OK
127.0.0.1:6379> hgetall user:001
1) "username"
2) "huben"
3) "password"
4) "123456"
127.0.0.1:6379> hset user:001 password 12345678
(integer) 0
127.0.0.1:6379> hgetall user:001
1) "username"
2) "huben"
3) "password"
4) "12345678"
127.0.0.1:6379> 
上一篇下一篇

猜你喜欢

热点阅读