Redis简单操作

目录

  • Redis简介

    • 安装
  • 与其他数据库的比较
    • Redis VS MySQL
    • Redis VS Memcache
  • Redis操作
    • 启动服务
    • 密码管理
    • 连接数据库
    • 关闭服务
    • 数据持久化
  • Redis五种数据类型的操作
    • string字符串
    • list列表
    • hash(字典)
    • set集合
    • sorted set 有序集合
  • python操作Redis
    • 直接使用
    • 连接池使用

Redis简介

Redis以键值对的形式储存数据

Redis支持的数据类型有:string、list、set、zset(sorted set)、hash

Redis特点:

  • 响应速度快,数据量小
  • Redis以内存作为数据存储介质,所以读写数据的效率极高

安装

下载地址:

与其他数据库的比较

Redis VS MySQL

  • redis: 内存数据库(读写快)、非关系型(操作数据方便、数据固定)
  • mysql: 硬盘数据库(数据持久化)、关系型(操作数据间关系、可以不同组合)

大量访问的临时数据,才有redis数据库更优

Redis VS Memcache

  • redis: 操作字符串、列表、字典、无序集合、有序集合 ,支持数据持久化(数据丢失可以找回(默认持久化,主动持久化save)、可以将数据同步给mysql) , 高并发支持
  • memcache: 操作字符串 , 不支持数据持久化 , 并发量小

Redis操作

启动服务

前提:前往一个方便管理redis持久化文件的路径再启动服务:dump.rdb
1)前台启动服务
>: redis-server
2)后台启动服务
>: redis-server --service-start
3)配置文件启动服务
>: redis-server 配置文件的绝对路径
>: redis-server --service-start 配置文件的绝对路径
eg>: redis-server --service-start D:/redis/redis.conf

密码管理

  • 提倡在配置文件中配置,采用配置文件启动
    requirepass 密码
  • 当服务启动后,并且连入数据库,可以再改当前服务的密码(服务重启,密码重置)
    config set requirepass 新密码
  • 连入数据库,查看当前服务密码密码
    config get requirepass

连接数据库

1)默认连接:-h默认127.0.0.1,-p(端口号)默认6379,-n(数据库编号)默认0,-a(密码)默认无
>: redis-cli

2)完整连接:
>: redis-cli -h ip地址 -p 端口号 -n 数据库编号 -a 密码

3)先连接,后输入密码
>: redis-cli -h ip地址 -p 端口号 -n 数据库编号
>: auth 密码

关闭服务

  • 在没有连接进数据库时执行 redis-cli shutdown
  • 连接进数据库后执行 shutdown

数据持久化

  • 配置文件的 默认配置

    • save 900 1 超过900秒有1个键值对操作,会自动调用save完成数据持久化
    • save 300 10 超过300秒有10个键值对操作,会自动调用save完成数据持久化
    • save 60 10000 超过60秒有10000个键值对操作,会自动调用save完成数据持久化
  • 安全机制
    • 当redis服务不可控宕机,会默认调用一下save完成数据持久化
  • 主动持久化
    • save 连入数据库时,主动调用save完成数据持久化
  • 注:数据持久化默认保存文件 dump.rdb,保存路径默认为启动redis服务的当前路径

Redis五种数据类型的操作

string字符串

  • 基本操作
# 设置
set key value  (例如: set name reese)

# 获取value值
get key (例如: get name)

# key是唯一的,不能用同一个key,否则会覆盖

# 设置多个值
mset k1 v1 k2 v2 ...

# 获取多个值
mget k1 k2 ...

# 给key设置过期时间
setex key exp value

# 将 key 所储存的值加上增量 increment 。
incrby key increment
  • 查看过期时间
127.0.0.1:6379> ttl name
(integer) -1

# -1代表永久, -2代表不存在
  • 设置过期时间
# 给已存在的key设置过期时间
expire key seconds   (例子:expire name 10)

# 设置key的同时,设置过期时间
set key value ex seconds  (例如: set name reese ex 20)
或者
setex key seconds value   (例如: setex name 20 cwz)
  • 追加
# 给已有的value值,添加新的值

append key value
  • 设置/获取多个
# 设置多个string
mset key value key value ...

例如:
mset user cwz password 123

# 获取多个
mget key key key ...

例子:
mget user password
  • key操作
# 查看所有的key值
keys *

# 删除
del key

# 查看key是否存在,存在返回1,不存在返回0
exists key

# 查看key类型
type key
  • 运算
set num 1   # 自动识别,字符串里面的整数

incr num    # 加1

decr num    # 减1

incrby num 50  # 增加多个

descby num 50  # 减少多个

list列表

栈:先进后出

队列:先进先出

  • 设置
# 左添加   栈 先进后出
127.0.0.1:6379> lpush my_list 1 2 3 4 5 6
(integer) 6

# 右添加   队列 先进先出
rpush my_list 7 8
  • 查看
查看所有:
127.0.0.1:6379> lrange my_list 0 -1
1) "6"
2) "5"
3) "4"
4) "3"
5) "2"
6) "1"
  • 获得list的元素个数
llen my_list
  • 查看特定索引位置的元素
lindex my_list 2
  • 删除
lpop my_list     # 删除左边第一个

rpop my_list     # 删除右边第一个

lrem my_list 1 5  # 表示从左往右删除1个5

lrem my_list 0 5  # 表示删除所有的5

lrem my_list -2 5  # 表示从右往左删除2个5

hash(字典)

是一个string类型的field和value的映射表,特别适合用于存储对象

hash的key必须是唯一的

Key : (field:value)

  • 设置
hset key field value

# 例子:
hset users name xxx
  • 获取
hget key field

# 例子:
hget users name
  • 删除
hdel key field

# 例子:
hdel users name
  • 设置多个
hmset user name yyy age 19 sex male
  • 获取多个
hmget user name age sex
  • 获取全部field value
hgetall user
  • 获取所有的field
hkeys user
  • 获取所有的value
hvals user
  • 获取field个数
hlen key
  • 获取field类型
type key

set集合

  • 设置
sadd my_set 1 2 3 4 5 6
  • 获取
smembers key
  • 删除
# srem指定删除
srem key members

# spop随即删除
spop key
  • 移动一个集合的值到另一个集合
smove oldkey newkey members

例子:
smove my_set1 my_set2 3
  • 判断集合存在某个值
sismember key value
  • 交集
sinter key1 key2 ...

# 把key1 key2的交集合并到newkey
sinterstore newkey key1 key2
  • 并集
sunion key1 key2 ...

# 把key1 key2的并集合并到newkey
sunionstore newkey key1 key2
  • 差集
sdiff key1 key2 ...

# 把key1 key2的差集合并到newkey
sdiffstore newkey key1 key2
  • 获取集合个数
scard key 
  • 随机返回一个数据
srandmember key

sorted set 有序集合

  • 设置
zadd key score member   (权,权重,顺序)

例子:
127.0.0.1:6379> zadd my_zset1 1 1 2 2 3 3 4 4 5 5 6 6

127.0.0.1:6379> zrange my_zset1 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
  • 查询获取
# zrange 正序

zrange my_zset1 0 -1

# zrevrange 倒序

zrevrange my_zset1 0 -1
  • 删除
zrem my_zset1 2
  • 索引
# zrank 正序
zrank key member

# zrevrank 反序
zrevrank key member
  • zcard 查看有序集合元素数
zcard key
  • zrangebyscore 返回集合中score在给定区间的元素
# zrange my_zset 0 -1 withscores

zrangebyscore my_zset 2 3 withscores
# 返回了score在2~3区间的元素
  • zcount 返回集合中在定区间的数量
zount key min max

例子
zount my_zset 2 3
  • zscore 查看score(权重)值
zscore key member

例子
zscore my_zset 3
  • zremrangebyrank 删除集合中排名在定区间中的元素
# zrange my_zset 0 -1 withscores
zrerangebyrank my_zset 1 3
  • zremrangebyscore 删除集合中score在给定区间的元素
# zrange my_zset 0 -1 withscores
zremrangebyscore my_zset 1 3

python操作Redis

安装 包 pip install redis

直接使用

import redis

rdb = redis.Redis(
    host='127.0.0.1',
    port=6379,
    db=0,
    password=None,
    decode_responses=True
)
rdb.set('name', 'reese')
print(rdb.get('name'))

连接池使用

import redis

pool = redis.ConnectionPool(
    host='127.0.0.1',
    port=6379,
    db=0,
    password=None,
    decode_responses=True
)
rdb = redis.Redis(connection_pool=pool)

print(rdb.get('name'))

一些操作:

rdb.expire('user_name', 20)  # 添加过期时间

rdb.ttl('user_name') # 在python中不能查看

rdb.mset(a=1, b=2)   # 设置多个

rdb.incr('num',222)  # 后面直接加参数为数量,如果不加参数,默认加1

rdb.lrem('list_1', 3, 0) # 要删的数量在后面,删除的元素在前面

rdb.hmset('user', {'name':'neo', 'age':19}) # key单独写出,后面用字典方式添加

原文地址:https://www.cnblogs.com/setcreed/p/12173913.html

时间: 2024-10-17 20:51:57

Redis简单操作的相关文章

Redis简单的数据操作(增删改查)

#Redis简单的数据操作(增删改查): 字符串类型 string 1. 存储: set key value 127.0.0.1:6379> set username zhangsan OK 2. 获取: get key 127.0.0.1:6379> get username "zhangsan" 以下同理: 127.0.0.1:6379> set age 23 OK 127.0.0.1:6379> get age "23" 127.0.0

redis简单配置

由于前段时间使用Kestrel,同时要操作Memcached及时更新缓存,又要操作database,持久化数据. 貌似Redis既可以当Cache又可以当Queue!于是,今天开始研究Redis! 一.Redis简要介绍 Redis —— REmote DIctionaryServer,可以直接理解为远程字典服务,也就是基于Key-Value模式Memcached+Database Persistence. 如果真要把Redis与Memcached进行对比,参考下图: 使用Memcached,让

Redis 集合操作

[Redis 集合操作] 1.SCARD key 返回集合 key 的基数(集合中元素的数量). 2.SDIFFSTORE destination key [key ...] 这个命令的作用和 SDIFF 类似,但它将结果保存到 destination 集合,而不是简单地返回结果集. 如果 destination 集合已经存在,则将其覆盖. destination 可以是 key 本身. 3.SINTER key [key ...] 返回一个集合的全部成员,该集合是所有给定集合的交集. 不存在的

小贝_php+redis简单实例

php+redis简单实例 一.说明 因为redis是c/s架构.从这个角度上.不论什么符合redis的client要求的.都能够与redis进行通讯.官方提供了非常多的client. php在web方面的发展.大家够有目共睹.因此这里主要是解说php与redis的使用实例 二.实例 这里仅使用了redis的字符串类型.用到了get和set命令 <? php /** * @explain php操作redis * 1.设置key为name,其值为脚本小子 * 2.获取key为name的值 * @

Redis简单使用(一)

1.Redis简介 Redis是一个开源的,使用C语言编写,面向“键/值”对类型数据的分布式NoSQL数据库系统,特点是高性能,持久存储,适应高并发的应用场景.Redis纯粹为应用而产生,它是一个高性能的key-value数据库,并且提供了多种语言的API性能测试结果表示SET操作每秒钟可达110000次,GET操作每秒81000次(当然不同的服务器配置性能不同). redis目前提供五种数据类型:string(字符串),list(链表), Hash(哈希),set(集合)及zset(sorte

php的redis 操作类,适用于单台或多台、多组redis服务器操作

redis 操作类,包括单台或多台.多组redis服务器操作,适用于业务复杂.高性能要求的 php web 应用. redis.php: <?php /* redis 操作类,适用于单台或多台.多组redis服务器操作 使用方法: 1.$rs=new mz_redis();$rs->load_config_file('redis_config1.php');$www=$rs->connect(1,true,0)==单台读连接,连接read_array第一个元素对应的redis服务器中的随

go redigo的简单操作

golang操作redis主要有两个库,go-redis和redigo.两者操作都比较简单,区别上redigo更像一个client执行各种操作都是通过Do函数去做的,redis-go对函数的封装更好,相比之下redigo操作redis显得有些繁琐.但是官方更推荐redigo,所以项目中我使用了redigo. 1.连接redis package redisclient import ( "fmt" redigo "github.com/garyburd/redigo/redis

MongoDB数据库简单操作

之前学过的有mysql数据库,现在我们学习一种非关系型数据库 一.简介 MongoDB是一款强大.灵活.且易于扩展的通用型数据库 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成.MongoDB 文档类似于 JSON 对象.字段值可以包含其他文档,数组及文档

Spring Boot 和 Redis 常用操作

1    第4-2课:Spring Boot 和 Redis 常用操作 Redis 是目前使用最广泛的缓存中间件,相比 Memcached,Redis 支持更多的数据结构和更丰富的数据操作,另外 Redis 有着丰富的集群方案和使用场景,这一课我们一起学习 Redis 的常用操作. 1.1    Redis 介绍 Redis 是一个速度非常快的非关系数据库(Non-Relational Database),它可以存储键(Key)与 5 种不同类型的值(Value)之间的映射(Mapping),可