redis 随笔

简介

Redis是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的Web应用程序。

Redis是一个内存数据库,但在磁盘数据库上是持久的,因此它代表了一个不同的权衡,在这种情况下,在不能大于存储器(内存)的数据集的限制下实现非常高的写和读速度。

内存数据库的另一个优点是,它与磁盘上的相同数据结构相比,复杂数据结构在内存中存储表示更容易操作,并且可在这些数据类型上定义原子操作。。 因此,Redis可以做很少的内部复杂性。

redis 和 memcached
  • redis 支持复杂的数据结构:redis 相比 memcached 来说,拥有更多的数据结构,能支持更丰富的数据操作。如果需要缓存能够支持更复杂的结构和操作, redis 会是不错的选择。

  • redis 原生支持集群模式:在 redis3.x 版本中,便能支持 cluster 模式,而 memcached 没有原生的集群模式,需要依靠客户端来实现往集群中分片写入数据。

  • 性能对比:由于 redis 只使用单核,而 memcached 可以使用多核,所以平均每一个核上 redis 在存储小数据时比 memcached 性能更高。而在 100k 以上的数据中,memcached 性能要高于 redis,虽然 redis 最近也在存储大数据的性能上进行优化,但是比起 memcached,还是稍有逊色。

  • redis是内存数据库,优点见上述

具体操作

redis运行

本地输入

redis-server redis.windows.conf

检测redis是否工作, 输入命令PING


127.0.0.1:6379> ping
PONG

这表明Redis已成功在您的计算机上安装了。

redis 配置

在Redis中,在Redis的根目录下有一个配置文件(redis.conf)。当然可以通过Redis CONFIG命令获取和设置所有的Redis配置。

1、(1)redis获得配置:

 127.0.0.1:6379>config get requirepass "pass" 

即获取到 连接密码

(2)设置密码:


127.0.0.1:6379> config set requirepass "pass" 
OK 
127.0.0.1:6379> config get requirepass 
1) "requirepass" 
2) "pass"

设置密码后,如果任何客户端运行命令而不进行身份验证,则会返回一个(error) NOAUTH Authentication required.的错误信息。 因此,客户端需要使用AUTH命令来验证。

127.0.0.1:6379> AUTH pass
OK

2、编辑配置
要更新配置,可以直接编辑redis.conf文件,也可以通过CONFIG set命令更新配置。


redis 127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE

示例

redis 127.0.0.1:6379> CONFIG SET loglevel "notice" 
OK 
redis 127.0.0.1:6379> CONFIG GET loglevel  
1) "loglevel" 
2) "notice"

3 、基础命令

1)获得符合规则的键名列表

KEYS PATTERN

使用SET命令建立一个名为bar的键,同样keys * 可以获取结果。
1309710-20190123185850890-1396633494.png

2) 判断是否存在某个键

EXISTS key

1309710-20190123190204849-324243559.png
如果键存在则返回1,不存在则返回0

3)删除键

DEL key [key...]

可以删除一个或多个键,返回值为删除的键的个数。

4)获取键值的数据类型

TYPE key

4、redis 数据类型

(1)字符串
Redis中的字符串是一个字节序列。Redis中的字符串是二进制安全的,这意味着它们的长度不由任何特殊的终止字符决定。因此,可以在一个字符串中存储高达512兆字节的任何内容。

示例:

redis 127.0.0.1:6379> set name "hello" 
OK 
redis 127.0.0.1:6379> get name 
"hello"

set 与get 为redis命令,name为存储的键,hello 为存储的值。

(2)hash/散列
Redis散列/哈希(Hashes)是键值对的集合。Redis散列/哈希是字符串字段和字符串值之间的映射。因此,它们用于表示对象。


127.0.0.1:6379> hmset key name "miao" password "wang" points 200

127.0.0.1:6379> hgetall key
1) "name"
2) "miao"
3) "password"
4) "wang"
5) "points"
6) "200"

散列/哈希数据类型用于存储包含用户的基本信息的用户对象。这里HMSET,HGETALL是Redis的命令,而key是键的名称。

(3)列表
Redis集合是字符串的无序集合。在Redis中,您可以添加,删除和测试成员存在的时间O(1)复杂性。

127.0.0.1:6379> sadd fruits apple
(integer) 0
127.0.0.1:6379> sadd fruits pear
(integer) 0
127.0.0.1:6379> sadd fruits orange
(integer) 1
127.0.0.1:6379> sadd fruits orange
(integer) 0
127.0.0.1:6379> smembers fruits
1) "apple"
2) "orange"
3) "pear"

列表具有不重复性。
一个集合中的最大成员数量为2^32 - 1(即4294967295,每个集合中元素数量可达40亿个)个。

(4)redis集合
Redis集合是唯一字符串的无序集合。 唯一值表示集合中不允许键中有重复的数据。

在Redis中设置添加,删除和测试成员的存在(恒定时间O(1),而不考虑集合中包含的元素数量)。列表的最大长度为2^32 - 1个元素(即4294967295,每组集合超过40亿个元素)。

127.0.0.1:6379> sadd myset "pencil"
(integer) 0
127.0.0.1:6379> sadd myset "book"
(integer) 0
127.0.0.1:6379> sadd myset "card"
(integer) 1
127.0.0.1:6379> sadd myset "card"
(integer) 0
127.0.0.1:6379> smembers myset
1) "book"
2) "card"
3) "pencil"

在上面的示例中,通过命令SADD将三个值插入到名称为“myset”的Redis集合中。

redis服务器

127.0.0.1:6379> info

说明了如何获取有关服务器的所有统计信息和信息。

转载于:https://www.cnblogs.com/gloria-liu/p/9717833.html

### Redis 详细教程使用指南 Redis 是一种高性能的键值对数据库,支持多种数据结构操作以及丰富的功能特性。以下是关于 Redis 的一些核心概念及其应用。 #### 主从复制机制 Redis 支持主从复制模式,这种模式允许将一台 Redis 服务器的数据同步到其他 Redis 服务器上。在这种架构中,提供数据写入服务的是主节点(master),而负责处理读请求的主要由从节点(slave)完成[^1]。通过这种方式可以有效分担负载压力,并提升系统的可用性和扩展能力。 #### 数据持久化方式 为了防止因意外宕机而导致数据丢失,Redis 提供了两种主要的持久化方法——RDB 和 AOF。 - **RDB (Redis DataBase)**: 这种方式会在特定的时间间隔内创建内存中的数据快照并将其保存至硬盘文件里。它适合于那些能够容忍一定范围内数据损失的应用场景[^2]。 - **AOF (Append Only File)**: 不同于 RDB 定期生成整个数据集副本的做法,AOF 则会记录每一个修改命令,在程序重启时重播这些日志从而重建原始状态。尽管这种方法通常会产生更大的日志体积,但它能带来更高的安全性保障[^2]。 #### 常见应用场景 除了基本的键值存储外,Redis 还广泛应用于以下几个领域: - **热点数据缓存**: 将频繁访问的信息驻留在高速 RAM 中以加速查询响应速度[^3]; - **限时促销活动的支持**: 如秒杀活动中临时存储商品库存数量等动态变化较大的数值型字段[^3]; - **计数统计需求满足**: 实现点赞次数累积计算等功能可通过 INCR 指令轻松达成目标[^3]; - **排行榜维护**: 对象分数排序展示可借助 Sorted Set 结构高效管理; - **分布式环境下的协调工具**: SETNX 可用于构建简单的互斥锁解决方案以便控制并发流程[^3]。 ```python import redis # 创建连接池实例 pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True) # 获取客户端对象 r = redis.Redis(connection_pool=pool) # 设置key-value pair 并设置过期时间为5秒 r.set('test_key', 'value_data', ex=5) print(r.get('test_key')) # 输出 value_data 后经过约五秒钟再次尝试获取则返回 None ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值