Redis初体验

定义

从属于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"
  1. 我们可以利用lists来实现一个消息队列,而且可以确保先后顺序,不必像MySQL那样还需要通过ORDER BY来进行排序。
  2. 利用LRANGE还可以很方便的实现分页的功能。
  3. 在博客系统中,每片博文的评论也可以存入一个单独的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。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值