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.gztar 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。
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- redis安装问题小结
- nosql
- 数据库链接字符串查询网站
- 我是运营,我没有假期
- DB2实例管理
- DB2实例管理
- 保障MySQL数据安全的14个最佳方法
- mysql问答汇集
- Tomcat端口被占用解决方法(不用重启)
- 使用 Redis 和 Python 构建一个共享单车的应用程序
- 第三章 数据库备份和还原
- Redis偶发连接失败案例实战记录
- 创建一个空的IBM DB2 ECO数据库的方法
- Access 2000 数据库 80 万记录通用快速分页类
- 开通一个数据库失败的原因的和解决办法
- 一个简单的asp数据库操作类
- DB2数据库的安装
- C#实现把指定数据写入串口