您的位置:首页 > 数据库 > Redis

Redis初体验

2016-05-23 18:11 501 查看


定义

从属于NOSQL中键值(Key-Value)存储类,这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。但是如果DBA只对部分值进行查询或更新的时候,Key/value就显得效率低下了。其具有水平扩展性,水平扩展性(horizontal scalability)指能够连接多个软硬件的特性,这样可以将多个服务器从逻辑上看成一个实体。

典型应用场景:

数据模型简单。
灵活性更强的IT系统。
对数据库性能要求高。
不需要数据高度一致性
对于给定Key容易映射复杂值的环境
内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。

数据模型:


Key 指向 Value 的键值对,通常用hash table来实现。

优点:


查找速度快。

缺点:


数据无结构化,通常只被当作字符串或者二进制数据。


源码安装Redis

进入redis官网(redis.io)下载源码包本例 下载的是3.2.0版本redis-3.2.0.tar.gz 安装目录暂定/usr/local/redis-3.2.0 进入/usr/local解压redis-3.2.0.tar.gz
tar zxvf redis-3.2.0.tar.gz
cd redis-3.2.0/
mkdir etc
mkdir bin
mkdir logs
makecd src && make test ##make test 需要tcl-8.5支持。
make install
mv redis-server ../bin
mv redis-cli ../bin
mv redis-sentinel ../bin
mv redis-check-aof ../bin
mv redis-benchmark ../bin
cd ..
mv redis.conf etc/


修改配置文件

vim etc/redis.conf


启动Redis

[root@10-186-24-106 redis-3.2.0]# bin/redis-server etc/redis.conf


进入Redis

[root@10-186-24-106 redis-3.2.0]# bin/redis-cli127.0.0.1:6379>


进行简单操作:

输入密码

127.0.0.1:6379> auth ianhol
OK


字符串:set指定key、value

127.0.0.1:6379> set t1 'ianhol'
OK


获取值
127.0.0.1:6379> get t1
"ianhol"


列表:lpush(左侧插入)、rpush(右侧插入)、指定list、value

127.0.0.1:6379> lpush tlist '1'
(integer) 1
(1.00s)
127.0.0.1:6379> rpush tlist '2'
(integer) 2127.0.0.1:6379> lpush tlist '0'
(integer) 3


列出指定编号元素:lrange key start stop
127.0.0.1:6379> lrange tlist 021) "0"2) "1"3) "2"

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

集合: sadd key member [member ...]


向集合myset插入新元素
127.0.0.1:6379> sadd myset 'one''two'
(integer) 2127.0.0.1:6379> sadd myset 'three'
(integer) 1


列出myset中所有元素
127.0.0.1:6379> smembers myset
1) "one"2) "three"3) "two"


判断元素是否存在于集合中,返回1为存在,0为不存在
127.0.0.1:6379> sismember myset 'two'
(integer) 1127.0.0.1:6379> sismember myset 'four'
(integer) 0


对两个集合求并集
127.0.0.1:6379> sunion myset myset2
1) "three"2) "two"3) "one"4) "four"


有序集合:zadd key [NX|XX] [CH] [INCR] score member [score member ...]

127.0.0.1:6379> zadd myzet 1'ianhol'2'chenl'0'norcy'
(integer) 3


列出所有元素及其序号
127.0.0.1:6379> zrange myzet 021) "norcy"2) "ianhol"3) "chenl"127.0.0.1:6379> zrange myzet 02 withscores
1) "norcy"2) "0"3) "ianhol"4) "1"5) "chenl"6) "2"


哈希:hmset key field value [field value ...]

127.0.0.1:6379> hmset user1 username redis password-auth ianhol NOSQL redis
OK


列出hash内容
127.0.0.1:6379> hgetall user1
1) "username"2) "redis"3) "password-auth"4) "ianhol"5) "NOSQL"6) "redis"


修改hash内容
127.0.0.1:6379> hset user1 password ianho
(integer) 1127.0.0.1:6379> hgetall user1 1) "username"2) "redis"3) "password-auth"4) "ianhol"5) "NOSQL"6) "redis"7) "password"8) "ianho"127.0.0.1:6379> hset user1 password-auth ianho
(integer) 0127.0.0.1:6379> hgetall user1
1) "username"2) "redis"3) "password-auth"4) "ianho"5) "NOSQL"6) "redis"7) "password"8) "ianho"


关闭服务器

127.0.0.1:6379> shutdown
not connected>
^C


关于key:
1.key不要太长,尽量不要超过1024字节,这不仅消耗内存,而且会降低查找的效率;
2.key也不要太短,太短的话,key的可读性会降低;
3.在一个项目中,key最好使用统一的命名模式,例如user:10000:passwd。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息