销售网站设计方案,装企营销系统,wordpress 投票插件,怎样留别人电话在广告上一、简介 redis 和 memcached 都是高性能的键值缓存数据库服务#xff0c;其中 memcached 支持多线程#xff0c;而 redis 支持丰富的数据结构且能内置持久化机制。 redis 数据都是以键值形式存储的#xff0c;键是字符串类型#xff0c;值有 7 种类型#xff08;本质上是…一、简介 redis 和 memcached 都是高性能的键值缓存数据库服务其中 memcached 支持多线程而 redis 支持丰富的数据结构且能内置持久化机制。 redis 数据都是以键值形式存储的键是字符串类型值有 7 种类型本质上是5种其中 HyperLogLog 是 string而 GEO 是 zset可以通过 object encoding keyname 查看但由于功能上的差异较大这里分为7种 1、string 字符串 2、list 列表 3、set 集合所有命令均以 S 开头 4、hash 散列所有命令均以 H 开头 5、zset 有序集合所有命令均以 Z 开头 6、HyperLogLog 7、GEO redis 3.2 不同的值类型甚至是同一种值类型其底层实现也可能是不一样的主要是考虑到不同情况下的效率优化具体可以看 redis 源码。 二、常见命令 redis 的命令可以参考官网https://redis.io/commands 对英文不熟练的也可以看国人翻译的网站http://redisdoc.com/ 以下对常见的命令进行列举 1、键操作命令 简单示例 127.0.0.1:6379 set age 18
OK
127.0.0.1:6379 dump age
\x00\xc0\x12\a\x00\xb2\xeb\xab\xbc\x1d\xeb\x911
127.0.0.1:6379 restore age1 5000 \x00\xc0\x12\a\x00\xb2\xeb\xab\xbc\x1d\xeb\x911
OK
127.0.0.1:6379 get age1
18 2、值操作命令String 3、值操作命令List 4、值操作命令Set 5、值操作命令Hash 6、值操作命令SortedSet 7、值操作命令HyperLogLog 7、值操作命令GEO 三、发布与订阅 redis 的发布与订阅是以频道channel为中介订阅者订阅相关channel发布者向channel发送string类型消息会通知到该channel相关的订阅者。在实际开发中会有一些问题其中一个问题是客户端客观上会存在断线重连的情况如果一个客户端在订阅了某个channel之后断线重连了已经不是原来的订阅者了则需要重新订阅相关channel而且会丢失断线期间的消息通知。另外订阅的客户端会进行阻塞模式一直监听 redis 通知的消息。取消订阅使用 unsubscribe ch1 [ch2] 命令如果不带任何频道名则表示退订所有频道退订操作在官方提供的 redis-cli 中是无法模拟的因为一旦执行订阅操作窗口就被阻塞了。 基于 redis 发布与订阅功能在 redis2.8后实现了键空间通知keyspace和键事件通知keyevent的功能前者用于当指定模式的键发生了变化时进行通知后者用于当发生指定的操作命令时进行通知。该功能需要消耗一定的CPU资源默认是关闭可通过修改 redis.conf 文件或执行 config set notify-keyspace-events AKE 来开启。命令中的 AKE 表示开启所有类型的通知更细化的设置请参考官方手册可以指定具体针对具体类型的键进行 keyspace 或 keyevent 通知。 监视一个 keyspace/keyevent 的格式是 psubscribe __keyspacedb__:* 和 psubscribe __keyeventdb__:* 如订阅 Users: 开头的键发生变化如下 psubscribe __keyspace0__:Users:* 而订阅删除事件的操作如下 psubscribe __keyevent0__:del 而如下的操作将会同时订阅 keyspace 和 keyevent在执行类似 add key value 操作时会收到两条通知消息 psubscribe __key*0__:* 四、事务 redis 在一定程度上实现了事务逻辑不支持回滚通过 multi/exec 包含的命令集顺序的将其中的命令入队如果入队成功会返回 queued如果入队失败则会导致事务失败即使执行exec也会返回事务错误将以原子操作执行需要注意的是如果事务队列中的某些命令执行成功而某些命令执行失败是存在的redis 并不会回滚。在事务命令入队时redis只会检查严重的语法格式错误逻辑错误是没法检测的比如对一个string键执行 lpush 操作。 multi 命令标记着事务的开始exec 标记事务的结束并提交事务discard 标记着事务的结束并放弃事务。与事务常常一起配合使用的有 watch 命令该命令用于在事务开始前监视一个 key 的内容是否发生变化。 在执行 exec 命令提交事务时redis会检测当前的 watch 队列中的数据是否发生变化如果发生变化则事务将不被执行程序可以尝试重试操作使用乐观锁是从效率考虑。无论提交还是放弃exec/discard一个事务都会清空当前的 watch 队列如果需要在事务开始前取消一个之前watch的操作可以使用 unwatch 命令。 注意如果 watch 的是一个带生存时间的键那么即使该键过期了redis 仍然认为其是没有变化的事务仍可正常执行。 redis 脚本是在 redis2.6 之后引入的另一种处理事务的方法使用脚本要更简单并且速度更快。redis 官方表示短时间内并不会移除原有的事务功能但未来如果脚本被广泛使用的话并不排除这种可能。 五、服务器管理 1、慢日志 通过慢日志可以记录执行时间较长的命令从而便于找出项目的效率问题。 通过下面的命令可以设置当命令耗时超过多少微秒时将被记录 config set slowlog-log-slower-than 10000 这些慢日志会记录到一个队列中可以通过下面的命令设置队列的长度 CONFIG SET slowlog-max-len 1000 查看慢日志可以用下面的命令如果跟上数字表示显示指定数量的日志 slowlog get [number] 查看当前慢日志的数量 slowlog len 清空慢日志 slowlog reset 六、集群 七、redis性能测试 http://www.cnblogs.com/silent2012/p/4514901.html转载于:https://www.cnblogs.com/tianyajuanke/p/6134323.html