redis笔记 一
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis笔记 一相关的知识,希望对你有一定的参考价值。
中文网站:http://redis.cn/documentation.html
英文网站:https://redis.io/
1.安装:
$ tar xzf redis-3.2.8.tar.gz
$ cd redis-3.2.8
$ make
服务端启动
$ src/redis-server
客户端启动
$ src/redis-cli
2.redis配置两个以及两个以上服务实例
redis实例的运行基于【redis.conf】,所以配置多个实例时,需要配置多个【redis.conf】文件。
$ vi redis6380.conf
daemonize yes #后台进程运行 pidfile pidfile/var/run/redis/redis_6380.pid port 6380 logfile logfile/var/log/redis/redis_6380.log rdbfile dbfilenamedump_6380.rdb
$ src/redis-server /etc/redis6380.conf
配置其他实例时,重复以上步骤。
3.配置Redis成为一个缓存
如果你想把Redis当做一个缓存来用,所有的key都有过期时间,那么你可以考虑 使用以下设置(假设最大内存使用量为2M):
maxmemory 2mb
maxmemory-policy allkeys-lru
以上设置并不需要我们的应用使用EXPIRE(或相似的命令)命令去设置每个key的过期时间,因为 只要内存使用量到达2M,Redis就会使用类LRU算法自动删除某些key。
相比使用额外内存空间存储多个键的过期时间,使用缓存设置是一种更加有效利用内存的方式。而且相比每个键固定的 过期时间,使用LRU也是一种更加推荐的方式,因为这样能使应用的热数据(更频繁使用的键) 在内存中停留时间更久。
基本上这么配置下的Redis可以当成memcached使用。
当我们把Redis当成缓存来使用的时候,如果应用程序同时也需要把Redis当成存储系统来使用,那么强烈建议 使用两个Redis实例。一个是缓存,使用上述方法进行配置,另一个是存储,根据应用的持久化需求进行配置,并且 只存储那些不需要被缓存的数据。
请注意:用户需要详细阅读示例redis.conf文件来决定使用什么内存上限处理策略。
4.redis事务
用法
MULTI 命令用于开启一个事务,它总是返回 OK 。 MULTI 执行之后, 客户端可以继续向服务器发送任意多条命令, 这些命令不会立即被执行, 而是被放到一个队列中, 当 EXEC命令被调用时, 所有队列中的命令才会被执行。
另一方面, 通过调用 DISCARD , 客户端可以清空事务队列, 并放弃执行事务。
EXEC 命令的回复是一个数组, 数组中的每个元素都是执行事务中的命令所产生的回复。 其中, 回复元素的先后顺序和命令发送的先后顺序一致。
当客户端处于事务状态时, 所有传入的命令都会返回一个内容为 QUEUED 的状态回复(status reply), 这些被入队的命令将在 EXEC 命令被调用时执行。
redis不支持回滚。
5.redis的数据类型
5.1.字符串
set key value 设定string类型的key,value get key mset key value [key value...] mget key [key...] del key 删除key keys key 列出key type key 查看key的类型 strlen key 计算key值的长度
5.2.列表(有序,不唯一)
lpush key value [value...] 向列表左端追加元素 rpush key value [value...] 向列表右端追加元素 lpop key 从列表左端弹出一个元素 rpop key 从列表右端弹出一个元素 llen key 计算列表中元素的个数 lrange key start stop 获取start到stop之间的元素
ltrim key start end 队列表进行修剪,只保留start到end范围内的元素。(start和end元素也会被保留) lrem key count value count>0,从左边开始删除前count个值为value的元素 count<0,从右边开始删除前|count|个值为value的元素 count=0,从删除全部值为value的元素
5.3.集合(无序,唯一)
sadd key member [member...] 向集合中添加一个或多个元素 srem key member [member...] 从集合中删除一个或多个元素 smembers key 获取集合中全部元素 sismember key member 判断元素是否在集合中
scard scard key 返回集合包含的元素数量
5.4.散列
hset key field value 设定hash类型的key,一个字段的名字和值 hget key field hmset key field value [field value...] hmget key field [field...]
hdel key field [field...] 删除一个散列里一个或者多个键值对 hgetall key 取key的全部信息 hkeys key 取key中全部字段 hvals key 取key中全部值
hlen key 返回散列包含的键值对数量
5.5.有序集合
5.6.发布与订阅
subscribe channel【channel...】 订阅给定的一个或者多个频道
unsubscribe channel【channel...】 退订给定的一个或者多个频道
publish channel message 向给定频道发送消息
5.7.键的过期时间
1.expire(为给定 key 设置生存时间 秒) 语法:expire key seconds redis> SET cache_page "www.google.com" OK redis> EXPIRE cache_page 30 # 设置过期时间为 30 秒 (integer) 1 redis> TTL cache_page # 查看剩余生存时间 (integer) 23 redis> EXPIRE cache_page 30000 # 更新过期时间 (integer) 1 redis> TTL cache_page (integer) 29996 2.expireat(为给定key设置生存周期unix时间戳) 语法:expireat key timestamp redis> SET cache www.google.com OK # 这个 key 将在 2012.12.12 过期 redis> EXPIREAT cache 1355292000 (integer) 1 redis> TTL cache (integer) 45081860 3.pexpire(使用毫秒设置key的生存时间) 语法:pexpire key milliseconds key 不存在或设置失败,返回 0 redis> SET mykey "Hello" OK redis> pexpire mykey 1500 (integer) 1 4. TTL 的返回值以秒为单位 redis> TTL mykey (integer) 2 5. PTTL 可以给出准确的毫秒数 redis> PTTL mykey (integer) 1499 6.pexpireat(使用毫秒设置key的生存时间戳) 语法:pexpireat key milliseconds-timestamp redis> SET mykey "Hello" OK redis> PEXPIREAT mykey 1555555555005 (integer) 1 7. persist key 移除键的过期时间
以上是关于redis笔记 一的主要内容,如果未能解决你的问题,请参考以下文章