redis使用

本文介绍了Redis的特性,包括其对多种语言的支持、丰富的数据类型和高性能。讲解了Redis的安装步骤,如何启动服务及使用客户端进行交互。提到了桌面管理器AnotherRedisDesktopManager的安装与配置。此外,详细阐述了Redis的基本操作,如设置数据库、键相关命令和字符串命令。最后,展示了Python使用Redis的示例,包括设置和获取值的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 安装

1.1 为什么要使用redis

  • 支持语言 Redis 支持市面上绝大多数的主流语言,包括 Java、Python、C、C++、Go、Perl、PHP、Ruby、C# 等等
  • 丰富的数据类型 Redis 除了支持典型的 string(字符串)类型,还支持 list(列表)、hash(散列表)、sets(集合) 、sorted set(有序集合)、geo(地理位置)等。
  • 持久化 Redis 将全部的数据存储在内存中,目前通过两种方式实现持久化
  • 性能极高 Redis能读的速度是110000次/s,写的速度是81000次/s,Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。

1.2 安装redis

参考 Redis 安装
安装完以后在 src 目录下会出现编译后的 redis 服务程序 redis-server,还有用于测试的客户端程序 redis-cli

  • 启动 redis
> cd src
> ./redis-server
  • 进入客户端测试
> cd src
> ./redis-cli
redis> set foo bar
OK
redis> get foo
"bar"

2. 使用桌面管理器

  • 安装 AnotherRedisDesktopManager
  • 在redis安装目录下 /usr/local/redis 修改(查看)配置文件,主要查看(修改)bind protected-mode requirepass port 这几个参数 ,更多参数说明参考 Linux安装部署Redis(超级详细)
  • 根据上面的参数配置AnotherRedisDesktopManager
    在这里插入图片描述
  • 链接成功界面如下
    在这里插入图片描述

3. redis入门使用

3.1 设置数据库

  • 修改配置文件中 databases 参数来设置数据库数量(此处共有16个数据库, index从0到15)
    在这里插入图片描述
  • 使用 SELECT 命令切换到指定的数据库,数据库索引号index用数字值指定,以0作为起始索引值。默认使用0号数据库。不同的数据库可以具有相同名称的key。使用Redis Cluster时,无法使用SELECT命令,因为Redis Cluster仅支持数据库0。对于Redis群集,拥有多个数据库将毫无意义
    在这里插入图片描述

3.2 常用命令

3.2.1 键相关命令

  • DEL key [key] 删除指定的一个或多个 key
  • EXISTS key [key ...] 检查指定的一个或多个 key 是否存在
  • RANDOMKEY 从当前数据库中,随机返回一个 key
  • RENAME key newkey 将 key 改名为 newkey
  • TYPE key 返回指定 key 所储存的值的类型

3.2.2 字符串命令

  • GET key 返回 key 所关联的字符串值
  • GETSET key value 将指定 key 的值设为 value,并返回 key 的旧值
  • MGET key [key ...] 返回指定的一个或多个 key 的值
  • MSET key value [key value ...] 同时设置一个或多个 key-value 对
  • SET key value [EX seconds|PX milliseconds] [NX|XX] 将字符串值 value 关联到 key,同时可以选择是否增加生存时间,也可以设置键是否存在的条件操作
  • SETNX key value 将 key 的值设为 value,当且仅当 key 不存在时,才成功
  • STRLEN key 返回 key 所储存的字符串值的长度

3.2.3 其他指令

其他(如:列表、哈希等)相关命令参考 Redis 列表(Lists)

4. python 使用redis

插入数值
set(key, value, ex=None, px=None, nx=False, xx=False)

  • 在 Redis 中设置值,默认,不存在则创建,存在则修改
  • ex: 过期时间(秒)
  • px: 过期时间(毫秒)
  • nx: 如果设置为True,则只有name不存在时,当前set操作才执行(新插入)
  • xx: 如果设置为True,则只有name存在时,当前set操作才执行(修改)

获取数值

get(key) 获取key对应的值

from redis import StrictRedis, ConnectionPool
import logging

LOG_FORMAT = "%(asctime)s  %(levelname)s  %(message)s"
logging.basicConfig(level=logging.INFO, format=LOG_FORMAT)


def connect_redis(host, password, port, db_index=0, decode_responses=True, charset="UTF8"):
    redis_db = StrictRedis(host, port, db_index, password, decode_responses=decode_responses, charset=charset)
    try:
        connect_success = redis_db.ping()
        if connect_success:
            logging.info(f"redis 连接成功!!! 当前连接db_index={db_index}")
        else:
            logging.error("redis 连接失败!!!")
        return redis_db, connect_success
    except Exception as e:
        logging.error(f"redis 连接出错: {e}")
        return redis_db, False


def setValues(redis_db, set_data):
    '''
    向redis中插入数据
    set_data: dict, 要插入的数据
    '''
    for key, value in set_data.items():
        redis_db.set(key, value)
        

if __name__ == "__main__":
    redis_db, is_success = connect_redis(host="localhost", 
                             port=5000, 
                             password="15ae6c07-e0db-301c", 
                             db_index=8)
    if is_success:
        redis_db.set("how old are you", "18 years old")
        redis_db.set("what's your name", "my name is lihua")
        res = redis_db.get("how old are you")
        res2 = redis_db.get("how are you")
        print(res, res2)

输出

18 years old       None

redis里存的内容
在这里插入图片描述

其他类型的使用参考:Python redis 使用介绍

参考

Redis 基础教程-程序猿笔记
Redis 教程-菜鸟教程

Redis 用法 简单说明ppt 初学者试用。 string: =============================================================================== SET name "John Doe" GET name 批量的读写操作 MSET age 30 sex "male" MGET age sex 存储数字 INCR age INCRBY age 4 GET age DECR age DECRBY age 4 GET age 修改和获取操作 APPEND name " Mr." GET name STRLEN name SUBSTR name 0 3 bit操作 SETBIT bit 10086 1 SETBIT bit 200 1 SETBIT bit 300 1 GETBIT bit 10086 GETBIT bit 100 BITCOUNT bit 设置超时 SETEX key_with_time 10 "same values" ttl key_with_time ttl key_with_time get key_with_time 如果服务器返回 OK ,那么这个客户端获得锁。 如果服务器返回 NIL ,那么客户端获取锁失败,可以在稍后再重试。 第一次成功,第二次失败(nil) set unknown "some data" NX EX 100 set unknown "some data" NX EX 100 key ===================================================================================== keys * SET name huangz EXISTS name DEL name 数据过期设置 SET name "John Doe" TTL name 先用EXISTS命令查看key值是否存在,然后设置了5秒的过期时间 EXISTS name EXPIRE name 5 EXISTS name GET name List ===================================================================================== 基本list操作 LPUSH students "John Doe" LPUSH students "Captain Kirk" LPUSH students "Sheldon Cooper" LLEN students LRANGE students 0 2 LPOP students LLEN students LRANGE students 0 1 LREM students 1 "John Doe" LLEN students LRANGE students 0 -1 多种修改操作 LINSERT students BEFORE "Captain Kirk" "Dexter Morgan" LRANGE students 0 -1 LPUSH students "Peter Parker" LRANGE students 0 -1 LTRIM students 1 3 LLEN students LRANGE students 0 2 LREM students 1 "John Doe" LLEN students LRANGE students 0 1 阻塞行为 确保key都被删除, 为command列表增加一个值,job 列表为空,被跳过,紧接着 command 列表的第一个元素被 DEL job command request LPUSH command "update system..." LPUSH request "visit page" BLPOP job command request 300 BLPOP job command request 300 BLPOP job command request 300 从别的窗口 LPUSH job "aaa" 等待10秒回怎样呢? BLPOP job command request 10 在MULTI/EXEC事务中的BLPOP # 对非空列表进行操作 RPUSH job "programming" MULTI BLPOP job 30 EXEC # 不阻塞,立即返回 # 对空列表进行操作 LLEN job MULTI BLPOP job 30 EXEC #不阻塞,立即返回(nil) SET ===================================================================================== 基本操作 SADD birds crow SADD birds pigeon SADD birds bat SADD mammals dog SADD mammals cat SADD mammals bat SMEMBERS birds SMEMBERS mammals 修改操作 SREM mammals cat SMEMBERS mammals SADD mammals human SMEMBERS mammals SISMEMBER mammals human 集合的子交并补等操作 SINTER birds mammals SUNION birds mammals SDIFF birds mammals Ordered SET ===================================================================================== ZADD days 0 mon ZADD days 1 tue ZADD days 2 wed ZADD days 3 thu ZADD days 4 fri ZADD days 5 sat ZADD days 6 sun ZCARD days ZRANGE days 0 6 ZSCORE days sat ZCOUNT days 3 6 ZRANGE days 0 -1 ZRANGE days 0 -1 WITHSCORES ZREVRANGE days 0 -1 ZREVRANGE days 0 -1 WITHSCORES ZRANGEBYSCORE days 0 6 ZRANGEBYSCORE days 0 6 WITHSCORES ZRANK days sat HASH ===================================================================================== HSET student name "Ganesh" HSET student age 30 HSET student sex "Male" HKEYS student HVALS student HGETALL student HGET student sex HDEL student sex HGETALL student 多值设置 HMSET kid name Akshi age 2 sex Female HMGET kid name age sex 数据库操作 ===================================================================================== DBSIZE # 0 号数据库的 key 数量 SELECT 1 # 切换到 1 号数据库 DBSIZE # 1 号数据库的 key 数量 flushall # 清空所有数据库的所有 key DBSIZE # 不但 1 号数据库被清空了 SELECT 0 # 0 号数据库(以及其他所有数据库)也一样 DBSIZE -在Redis中,你可以设定对某一个key值进行消息发布及消息订阅,当一个 key值上进行了消息发布后,所有订阅它的客户端都会收到相应的消息。 这一功能最明显的用法就是用作实时消息系统,比如普通的即时聊天,群聊等功能。 Publish/Subscribe ===================================================================================== 用一个客户端订阅管道 SUBSCRIBE channelone 另一个客户端往这个管道推送信息 PUBLISH channelone hello PUBLISH channelone world 用一个客户端订阅所有channel开头的信息通道 PSUBSCRIBE channel* 另一个客户端对两个推送信息 PUBLISH channelone hello PUBLISH channeltwo world 事务性 ===================================================================================== NX结尾命令都是判断在这个值没有时才进行某个命令。 SET name "John Doe" SETNX name "Dexter Morgan" GET name Redis还支持自定义的命令组合,通过MULTI和EXEC,将几个命令组合起来执行 SET counter 0 MULTI INCR counter INCR counter INCR counter EXEC GET counter DISCARD命令来中断执行中的命令序列 SET counter 0 MULTI INCR counter INCR counter INCR counter DISCARD GET counter 持久化 ===================================================================================== 数据快照的原理是将整个Redis中存的所有数据遍历一遍存到一个扩展名为rdb的数据文件中。通过SAVE命令可以调用这个过程。 SET name "John Doe" SAVE SET name "Sheldon Cooper" BGSAVE /home/dong1/redis-2.6.16/src/dump.rdb 其日志文件以aof结局,我们一般各为aof文件。要开启aof日志的记录 你需要在配置文件中进行如下设置: appendonly yes 管理命令 ===================================================================================== Redis支持多个DB,默认是16个,你可以设置将数据存在哪一个DB中,不同DB间的数据具有隔离性。也可以在多个DB间移动数据。 SELECT 0 SET name "John Doe" SELECT 1 GET name SELECT 0 MOVE name 1 SELECT 1 GET name DBSIZE INFO FLUSHDB SET name "John Doe" DBSIZE SELECT 1 DBSIZE SELECT 0 FLUSHDB DBSIZE FLUSHALL DBSIZE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值