redis 教程,redis使用方法
Redis教程:概述redis是一个nosql数据库,它的数据存储在内存中。同时redis可以定期将内存数据同步到磁盘,也就是可以持久化数据,它比memcached支持更多的数据结构(string,list list[队列和堆栈],set[集合],sorted set[有序集],hash(哈希表))。相关文件:http://redisdoc.com/index.html
Redis使用场景:登录会话存储:存储在redis中,与memcached比较,数据不会丢失。排名/计数器:比如一些选秀类节目,往往会有一些排名靠前的主播排名。还有一些看文章的技巧,或者新浪微博的点赞数。作为消息队列:例如,celery使用redis作为中间人。当前在线人数:还是之前的show例子,会显示当前系统有多少在线人数。一些常用的数据缓存:比如我们的BBS论坛,版块不经常变化,但是每次访问首页都要从mysql中获取,可以缓存在redis中,不用每次都请求数据库。缓存前200篇文章或评论:一般用户在浏览网站时,只会浏览一些之前的文章或评论,所以可以缓存前200篇文章和对应的评论。如果用户访问的文章超过200篇,就会访问数据库,如果以后的文章超过200篇,前面的文章就会被删除。朋友:微博的朋友是通过redis实现的。以及发布订阅功能:可以作为聊天软件使用。redis和memcached的比较
存储
类型
纯内存数据库
内存同步数据库
数据类型
定义值时,数据类型应该是固定的。
不需要
虚拟内存
不支持
支持
过期策略
支持
支持
存储数据安全性
不支持
可以将数据同步到dump.db中
灾难恢复
不支持
您可以将数据从磁盘恢复到内存。
分布式的
支持
主从同步
订阅和发布
不支持
支持
ubuntu系统中redis的安装和启动:sudo apt-get install redis-server卸载:sudo apt-get purge-auto-remove redis-server启动:Redis安装后会默认自动启动,可以通过以下命令查看:psaux grepradis如果想自己手动启动,可以通过以下命令启动:
Sudo服务redis-server start stop:redis上sudo服务redis-server stop的操作有两种方式,第一种方式是redis-cli,第二种方式是Python、PHP、JAVA等编程语言。
使用redis-cli对redis执行字符串操作:Start Redis:sudo service Redis-server Start Connect Redis-server:Redis-CLI-h[IP]-p[port]Add:set key value
比如:
Set username xiaotuo将字符串值value关联到key。如果该键已经包含其他值,set命令将覆盖旧值,忽略其类型。而且默认的过期时间是永久的,也就是永远不会过期。
删除:删除键
比如:
Del username设置过期时间:过期密钥超时(秒)。设置该值时,您还可以指定过期时间:
设置键值EX超时
或者:
Setkey超时值查看过期时间:ttl键
比如:
Ttl username查看当前redis中的所有key: keys *列表操作:add element: lpush key value到列表左侧,将value值插入到列表键的头中。如果该键不存在,将创建一个空列表并执行lpush。当键存在但不是列表类型时,将返回一个错误。
在列表右侧添加一个元素:rpush key value将value值插入列表键的页脚。如果该键不存在,将创建一个空列表并执行RPUSH操作。当键存在但不是列表类型时,将返回一个错误。
检查列表中的元素:lrange键start stop返回列表键中指定间隔内的元素,间隔由offset start和stop指定。如果你想从第一个到最后一个,在左边输入0 -1。
从列表中删除元素:删除并返回列表的头元素key: lpop key删除并返回列表的尾元素:rpop key删除并返回列表的中间元素key: lrem key count value将删除列表中带有值的count元素。
指定要返回的元素:lindex key index将返回该元素在键列表中的索引。
获取列表中元素的数量:llen key
比如:
Llen languages删除指定的元素:lrem键计数值
比如:
根据参数count的值,emlanguages 0 PHP删除列表中与参数值相等的元素。count的值可以是以下值:
0:从页眉到页脚搜索,并删除等于value的元素。这个数字是count。0:从表的末尾搜索到表头,并删除等于value的元素。数字是count的绝对值。Count=0:删除表中所有与值相等的值。集合的操作:添加元素:添加集合值1值2.
比如:
Sadteam小朵大朵观赏元素:smembeers套装
比如:
Smembers团队删除元素:srem集合成员.
比如:
Srem小组小托大托查看集合中的元素数:scard集合
比如:
Scard team1获取多个集合的交集:烧结集合1集合2
比如:
烧结组1组2获得多个集合的并集:烧结组1集合2
比如:
Union team1team2获取多个集合的差集:sdiff set1 set2。
比如:
Sditteam1 team2 hash hash操作:添加新值:hset关键字段值。
比如:
Et网站百度Baidu.com将哈希表键中字段的值设置为value。
如果该键不存在,则创建一个新的哈希表并执行HSET操作。如果域字段已经存在于哈希表中,旧值将被覆盖。
获取与hash: hget键字段中的字段相对应的值。
比如:
Hget网站百度删除字段中的一个字段:hdelkeyfield。
比如:
Hdwebsitebaidu获取hash: hgetallkey中的所有字段和值。
比如:
Hgetall网站获取所有的字段:HKEYS在一个散列键
比如:
Hkeys网站获取一个hash中的所有值:HwalsKey
比如:
Hvals网站确定哈希中是否存在字段:exists keyfield。
比如:
Hexists网站百度在hash: hlen字段中获得总的键值对
比如:
HLWEBSITE事务操作:Redis事务可以一次执行多个命令,事务具有以下特点:隔离操作:事务中的所有命令都会被序列化,顺序执行,不会被其他命令干扰。原子操作:事务中的所有命令要么被执行,要么都不执行。打开一个事务:multi以后执行的所有命令都在这个事务中执行。
执行:exec将一起提交multi和exec中的操作。
取消事务:放弃将取消multi后的所有命令。
监控一个或多个密钥:watchkey.监控一个(或多个)键。如果这个(或这些)键在事务执行前被其他命令改变,事务将被中断。
取消对所有键的监控:unwatch发布/订阅操作:向通道发布消息:发布通道消息订阅通道消息:订阅通道持久化:redis提供了两种数据备份方式,一种是RDB,一种是AOF。下面将详细描述两种备份策略:
RDB AOF --- 开-关开:默认为开。关闭:配置文件中的所有保存都被注释,即关闭。 Open: aof通过appendonly打开,在配置文件中为yes,通过no关闭,同步机制您可以指定在某个时间同步多少个命令。比如一分钟有两个命令,同步一次。每秒或每条命令后同步存储内容将具体值存储在redis中存储执行的操作命令以更新数据存储文件的路径根据dir和dbfilename指定路径和具体文件名根据dir和appendfilename指定具体路径和文件名优点 (1)将数据存储到文件中会被压缩,文件大小小于aof。(2)由于redis的具体值被存储并将被压缩,所以恢复速度比AOF快。(3)非常适合备份。 (1)AOF的策略是每秒或每次发生写操作时进行同步,所以即使服务器出现故障,最多也只会丢失一秒钟的数据。(aof存储Redis命令,它直接附加在aof文件的后面。所以每次备份的时候,只需要添加新的数据就可以了。(3)如果AOF文件很大,那么Redis将重写它,只保留最小的命令集。缺点(1)RDB会在某段时间内有多次写操作时启动同步机制。由于压缩机制的原因,RDB会在同步过程中重新保存整个Redis中的数据,所以您通常设置至少5分钟保存一次数据。在这种情况下,一旦服务器出现故障,5分钟的数据就会丢失。(2)当数据保存到RDB时,Redis会分叉出一个子流程进行同步,在数据量比较大的情况下可能会非常耗时。 (1)AOF文件比RDB文件大,因为它没有经过压缩。(2)AOF每秒或每次写操作都备份一次,所以如果并发量大,效率可能会有点慢。(3)由于AOF文件存储命令,Redis在灾难恢复时会在AOF重新运行命令,没有RDB快。 More http://redisdoc.com/topic/persistence.html#redis 安全性:在配置文件中,设置requirepass密码,因此客户端连接时需要使用密码:redis-cli -p 127.0.0.1 -p 6379。
redis设置用户名xxx
(错误)不需要身份验证。
redis验证密码
redis设置用户名xxx
OKPython操作redis安装Python-redis: pip安装redis。创建一个新文件,比如redis_test.py,然后初始化一个redis实例变量,在ubuntu虚拟机中打开Redis。例如,虚拟机的ip地址是192.168.174.130。代码如下:#从redis包中导入Redis类。
从redis导入Redis
#初始化redis实例变量
xtis=redis(host= 192 . 168 . 174 . 130 ,port=6379)对字符串的操作:操作redis的方法名称,就像之前使用redis-cli一样,现在简单介绍一些常用的。示例代码如下(遵循上述代码):#添加一个值,并将到期时间设置为
xtredis.set(用户名,小托,ex=60)
#获取一个值
xtredis.get(用户名)
#删除一个值
xtredis.delete(用户名)
#将值增加1
xtredis.set(read_count ,1)
Xredis.incr (read_count) #此时read_count变为2。
#将值减少1
Xtdis.decr (read_count) #此时read_count变成了一对列表操作:同一个字符串操作,所有方法的名字都和使用redis-cli操作一样:#在语言列表的左边加一个python。
xtredis.lpush(语言, python )
#在语言列表的左边添加一个php
xtredis.lpush(语言, php )
#在此语言列表的左侧添加javascript
xtredis.lpush(语言, javascript )
#获取语言列表中的所有值
打印xtredis.lrange(语言,0,-1)
对集合的[javascript , php , python]操作:#添加一个元素小拓到集合团队
xtredis.sadd(团队,小拓)
#将元素大拖添加到收集团队
xtredis.sadd(team , datuo )
#向收集小组添加元素切片
xtredis.sadd(team , slice )
#获取集合中的所有元素
xtredis.smembers(团队)
[大托,小托,切片] #对hash的乱序操作:#将百度添加到网站的hash中。
xtredis.hset(网站,百度, baidu.com )
#将google添加到网站列表中
xtredis.hset(网站,谷歌,谷歌. com )
#获取网站散列中的所有值
打印xtredis.hgetall(“网站”)
{Baidu: Baidu.com , Google: Google.com}事务(管道)操作:redis支持事务操作,即有些操作只有统一完成才能完成。否则执行失败,在python中操作redis非常简单。示例代码如下:#定义一个管道实例。
pip=xtredis.pipeline()
#做第一步,给BankA自我成长1
pip.incr(BankA )
#执行第二步,将BankB减1。
pip.desc(BankB )
#执行交易
Pip.execute()以上展示了python-redis的一些常用方法。如果想进一步了解其他方法,可以参考python-redis的源代码(见源代码pycharm的快捷键提示:将鼠标光标放在import redis的Redis上,然后按ctrl b进入)。
转载请联系作者获得授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。