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 移除键的过期时间
时间: 2024-08-30 10:14:34

redis笔记 一的相关文章

redis笔记

redis笔记 下载完redis,执行make命令. 然后启动redis就进src文件夹,执行./redis-server就可以了. 再在文件夹下执行 ./redis-cli 就可以执行redis的命令了. pipelining  一次请求发送多个命令,以提高性能.我们在使用redis时都是向它发送命令,每次都是需要和redis建立tcp连接,然后发送命令信息,redis执行命令后,客户端等待着redis的响应.这个我们当然知道,就像访问db,IO开销都是消耗资源的大头,所以redis提供了pi

Redis笔记整理(二):Java API使用与Redis分布式集群环境搭建

[TOC] Redis笔记整理(二):Java API使用与Redis分布式集群环境搭建 Redis Java API使用(一):单机版本Redis API使用 Redis的Java API通过Jedis来进行操作,因此首先需要Jedis的第三方库,因为使用的是Maven工程,所以先给出Jedis的依赖: <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactI

Redis笔记整理(三):进阶操作与高级部分

[TOC] Redis笔记整理(三):进阶操作与高级部分 Redis发布订阅 Redis发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. Redis客户端可以订阅任意数量的频道. 下图展示了频道channel1,以及订阅这个频道的三个客户端--client1,client2,client5之间的关系. 当有新消息通过PUBLISH命令发送给频道channel1时,这个消息就会被发送给订阅它的三个客户端: 相关操作命令如下: 命令 描述 PSUBS

传智168期 day61 redis 笔记(2017年8月25日19:16:30)

redis入门笔记,介绍了如何在Linux下搭建redis,开启redis服务,还有常见的操作. 笔记下载: 链接:https://pan.baidu.com/s/1sl9GneP 密码:yh7k

Redis笔记——技术点汇总

目录 · 特点 · 安装 · 数据库 · 服务器命令 · 数据类型及其操作命令 · 数据结构 · string · list · set · hash · zset · 发布与订阅 · 排序 · 事务 · pipeline · 基准测试 · 键的过期 · 持久化 · 概况 · snapshoting · AOF · 主从复制 · HA · Lua · 示例:分布式日志 特点 1. Redis是一个开源的.C语言编写的.面向键值对类型数据的分布式NoSQL数据库系统. 2. 特点:高性能(内存数据

redis笔记(一)-string数据类型

一.概述: 字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等.在Redis中字符串类型的Value最多可以容纳的数据长度是512M. 二.相关命令列表: 命令原型                                            时间复杂度             返回值 命令描述 APPEND key value O(1) 追加后Value的长度 如果该Key已

小蚂蚁学习Redis笔记(5)——Redis数据类型之list类型

Redis之lists类型以及操作 list是一个链表结构,主要功能是push.pop,获取一个范围的所有值等等.操作中key理解为链表的名字.Redis的list类型其实就是一个每个子元素都是string类型的双向链表.可以通过push.pop操作从链表的头部或者尾部添加删除元素,这样list既可以作为栈,也可以作为队列. 栈和队列的特性    栈:先进后出:队列:先进先出. 1.    lpush    为链表的头部添加字符串元素 格式:    lpush    mylist1    "al

Redis 笔记与总结2 String 类型和 Hash 类型

Linux 版本信息: cat /etc/issue 或cat /etc/redhat-release(Linux查看版本当前操作系统发行版信息) CentOS release 6.6 (Final) (一)String 类型 [定义]string 是最简单的类型,你可以理解成与 Memcached 是一模一样的类型,一个 key 对应一个 value,其上支持的操作与 Memcached 的操作类似.但它的功能更丰富. string 类型是二进制安全的.意思是 redis 的 string 可

点滴记录——学习Redis笔记

转载请说明出处:http://blog.csdn.net/cywosp/article/details/39701409 Redis 默认端口6379 Redis适用场景 1. 取最新N个数据的操作 2. 排行榜应用,取TOP N操作 3. 需要精确设定过期时间的应用 4. 计数器应用 5. Uniq操作,获取某段时间所有数据排重值 6. 实时系统,反垃圾系统 7. Pub/Sub构建实时消息系统--消息的发布与订阅 8. 构建队列系统 9. 缓存 Redis数据类型 Strings类型及操作

redis 笔记03

RDB 持久化 1. RDB文件用于保存和还原Redis服务器所有数据库中的所有键值对数据. 2. SAVE命令由服务器进程直接执行保存操作,所以该命令会阻塞服务器. 3. BGSAVE令由子进程执行保存操作,所以该命令不会阻塞服务器. 4. 服务器状态中会保存所有用save选项设置的保存条件,当任意一个保存条件被满足时,服务器就自动执行BGSAVE命令. 5. RDB文件是一个经过压缩的二进制文件,由多个部分组成. 6. 对于不同类型的键值对,RDB文件会使用不同的方式来保存它们. 7. Re