redis的详解
一.概念。
redis是一款高性能的NOSQL系列的非关系型数据库。
二.redis安装。
1、安装redis
$ cd /usr/local $ wget http://download.redis.io/releases/redis-6.0.1.tar.gz $ tar xzf redis-6.0.1.tar.gz $ mv redis-6.0.1 redis $ cd redis $ make
2、部署
为了方便管理,将Redis文件中的conf配置文件和常用命令移动到统一文件中
1)创建bin和etc文件
2)将/usr/local/redis目录下redis.conf配置文件,复制移动到 /usr/local/redis/ect下
执行命令如下:
mv redis.conf /usr/local/redis/etc/
进入src目录,移动mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server到/usr/local/redis/bin/
执行命令 :mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server /usr/local/redis/bin/
3)、执行redis-server 启动redis,并指定启动服务配置文件
redis-server /usr/local/redis/etc/redis.conf
后台启动redis方法(注意目录): https://www.cnblogs.com/caijunchao/p/10926457.html
三.命令操作。
更多操作:http://doc.redisfans.com/index.html
所有命令解析:http://www.redis.net.cn/order/,遇到不懂的可以来查询。
1、redis的数据结构:键值对格式,key是字符串类型,value有5中类型:
*字符串类型 string
* 哈希类型 hash : map格式
* 列表类型 list : linkedlist 格式
* 集合类型 set
* 有序集合类型 sortedset
2、字符串类型 string:
*存储: SET key value [EX seconds] [PX milliseconds] [NX|XX]
* 获取: get key
* 删除:del key
3、哈希类型 hash:
*存储: hset key field value
* 获取: hget key field hgetall key
* 删除:hdel key field
4、列表类型 list : 可添加一个元素到一个列表的头部或尾部。如果又添加,是以“挤进 去”的方式。
* 添加:1、lpush key value 2、rpush key value
* 获取: lrange key start end :范围获取。
* 删除:lpop key rpop key 删除元素并将其返回。
5、集合类型 set :无序、不允许元素重复。
* 存储: sadd key value
* 获取:smembers key 获取集合所有元素。
* 删除;srem key value : 删除集合某个元素。
6、有序集合 sortedset : 不允许元素重复,但有序。 根据score 排序
* 存储 : zadd key score value
* 获取 : zrange key start end
* 删除: zrem key value
7、通用命令。
* keys * :查询所有键
* type key : 获取key 对应value 的类型。
* del key : 删除指定键值对。
四.Redis应用。
(1)、会话缓存(Session Cache)
最常用的一种使用Redis的情景是会话缓存(session cache)。用Redis缓存会话比其他存储(如Memcached)的优势在于:Redis提供持久化。当维护一个不是严格要求一致性的缓存时,如果用户的购物车信息全部丢失,大部分人都会不高兴的,现在,他们还会这样吗?
幸运的是,随着 Redis 这些年的改进,很容易找到怎么恰当的使用Redis来缓存会话的文档。甚至广为人知的商业平台Magento也提供Redis的插件。
(2)、全页缓存(FPC)
除基本的会话token之外,Redis还提供很简便的FPC平台。回到一致性问题,即使重启了Redis实例,因为有磁盘的持久化,用户也不会看到页面加载速度的下降,这是一个极大改进,类似PHP本地FPC。
再次以Magento为例,Magento提供一个插件来使用Redis作为全页缓存后端。
此外,对WordPress的用户来说,Pantheon有一个非常好的插件 wp-redis,这个插件能帮助你以最快速度加载你曾浏览过的页面。
(3)、队列
Reids在内存存储引擎领域的一大优点是提供 list 和 set 操作,这使得Redis能作为一个很好的消息队列平台来使用。Redis作为队列使用的操作,就类似于本地程序语言(如Python)对 list 的 push/pop 操作。
如果你快速的在Google中搜索“Redis queues”,你马上就能找到大量的开源项目,这些项目的目的就是利用Redis创建非常好的后端工具,以满足各种队列需求。例如,Celery有一个后台就是使用Redis作为broker,你可以从这里去查看。
(4),排行榜/计数器
Redis在内存中对数字进行递增或递减的操作实现的非常好。集合(Set)和有序集合(Sorted Set)也使得我们在执行这些操作的时候变的非常简单,Redis只是正好提供了这两种数据结构。所以,我们要从排序集合中获取到排名最靠前的10个用户–我们称之为“user_scores”,我们只需要像下面一样执行即可:
当然,这是假定你是根据你用户的分数做递增的排序。如果你想返回用户及用户的分数,你需要这样执行:
ZRANGE user_scores 0 10 WITHSCORES
Agora Games就是一个很好的例子,用Ruby实现的,它的排行榜就是使用Redis来存储数据的,你可以在这里看到。
(5)、发布/订阅
最后(但肯定不是最不重要的)是Redis的发布/订阅功能。发布/订阅的使用场景确实非常多。我已看见人们在社交网络连接中使用,还可作为基于发布/订阅的脚本触发器,甚至用Redis的发布/订阅功能来建立聊天系统!(不,这是真的,你可以去核实)。
Redis持久化: https://www.cnblogs.com/caijunchao/p/12913751.html
Linux下配置Redis集群模式: https://www.cnblogs.com/caijunchao/p/9572185.html
Linux下一台服务器Redis主从复制(master-slave)配置:https://www.cnblogs.com/caijunchao/p/9572105.html