redis 学习记录

概述:
redis是一种非关系性数据库,数据是保存在内存当中,同时redis定时把内存数据更新同步到磁盘,数据持久化,支持更多的数据结果,string\list\set\sortedset\hash

使用场景:
1、存储登陆会话信息,存储在redis中,数据不会丢失
2、一些常用的数据存储,网站中一些数据不经常变化,但是每次都要从mysql中获取,可以在redis中缓存下来,不用每次请求数据库

特点:
内存同步数据库
不需要固定数据类型
redis支持虚拟内存
支持过期策略
可以将磁盘中的数据恢复到内存
支持分布式,主丛同步
支持订阅于发布

mac安装redis:
1、使用homebrow安装redis,查看是否安装brow:brew --version
2、查看redis有那些版本:brew search redis
3、安装制定的版本:brew install redis
4、启动brew services start redis(使用brew services list可以看到mac上所有服务的目前情况)

redis启动命令:
1.启动redis服务
brew services start redis
2.关闭redis服务
brew services stop redis
3.重启redis服务
brew services restart redis
4.打开控制台
redis-cli -h [ip] -p [端口]

redis 字符串命令:

1、添加
set key value;如:set username zhangshan
将字符串值value关联到key,如果key已经持有其他值,set命令就覆盖旧值
2、删除
del key;如: del del username
3、获取value
get key;如: get username
4、设置过期时间
expire key time
添加时设置过期时间:
set key value EX time
setex key value time
查看过期时间:
ttl key
注:如果在添加值的时候没有指定过期时间,那么这个过期时间就是永久
5、查看所有的key
keys *

redis操作列表
1、在列表左边添加元素
lpush key value
2、在列表右边添加元素
rpush key value
3、查看key对应列表中所有的值
lrange key start stop
返回列表key中指定区间的值:eg:获取key所有的值:lrange name 0 -1
4、移除列表的头元素
lpop key
5、移除列表的尾元素
rpop key
6、指定返回几个元素
lindex key index
7、获取列表的元素个数
llen key
8、删除指定的元素
lrem key count value
根据参数 count 的值,移除列表中与参数 value 相等的元素。count的值可以是以下几种:

count > 0:从表头开始向表尾搜索,移除与value相等的元素,数量为count。
count < 0:从表尾开始向表头搜索,移除与 value相等的元素,数量为count的绝对值。
count = 0:移除表中所有与value 相等的值。

redis集合操作:
1、添加元素
sadd key value1 value2
2、查看元素
smembers key
3、移除元素
srem key value
4、查看集合的个数
scard names
5、获取多个集合的交集
sinter key1 key2
6、获取多个集合的并集
sunion key1 key2
7、获取多个集合的差集
sdiff key1 key2

redis的hash操作:
1、添加一个新值
hset key field value
eg:hset case name zhangshan
2、添加多个值
hmset case name zhangshan age 18
3、获取hash中key对应value
hget case name
4、删除对应hash的值
hdel case name
5、获取某个hash中所有键值对
hgetall hash
6、获取某个hash中所有的field
hkeys key
7、获取某个hash中所有的值
hvals key
8、判断hash中是否存在某个field
hexists key name
9、获取hash中总共的键值对
hlen field

redis事物操作:
隔离操作:按顺序执行,不会被其他命令打扰
原子操作:事务中的命令要么全部被执行,要么全部都不执行
1、开启事务
multi
2、执行事务
exec
eg:
127.0.0.1:6379> multi
OK
127.0.0.1:6379(TX)> set user case1
QUEUED
127.0.0.1:6379(TX)> get user
QUEUED
127.0.0.1:6379(TX)> exec

  1. OK
  2. “case1”
    127.0.0.1:6379>

3、取消事务
discard
4、监视一个或者多个key
watch key
如果事务发生了变化,永远不会执行
5、取消监视
unwatch

redis 的发布和订阅:
1、给某个频道发布消息
publish case2 huangyong
2、订阅某个频道的消息
subscribe case
先订阅后发布
也可以订阅多个频道,直接在后面增加频道即可

redis同步机制:

redis提供了两种数据备份的方式:
配置文件:/usr/local/etc/redis.conf(修改配置文件后要重启redis)

1、RDB
默认开启。关闭就是把文件中的配置文件SNAPSHOTTING save都注视,就是关闭
可以save设置同步机制:
save 900 1:如果在900s以内发生了一次数据更新操作,那么就会做一次同步操作
save 300 10:如果在300s以内发生了10次数据更新操作,那么就会做一次同步操作
save 60  10000:如果在60s以内发生了10000次数据更新操作,那么就会做一次同步操作

可以通过dbfilename找到存储的文件名称,dir为存储的文件路径
同步文件:/usr/local/var/db/redis/dump.rdb

dump.rdb存储的是key,value形式的值
dump会进行压缩

优点:
1)存储数据到文件中会进行压缩,文件体积比aof小。
2)因为存储的是redis具体的值,并且会经过压缩,因此在恢复的时候速度比AOF快。
3)非常适用于备份

缺点:
(1)RDB在多少时间内发生了多少写操作的时候就会出发同步机制,因为采用压缩机制,RDB在同步的时候都重新保存整个Redis中的数据,因此你一般会设置在最少5分钟才保存一次数据。在这种情况下,一旦服务器故障,会造成5分钟的数据丢失。
(2)在数据保存进RDB的时候,Redis会fork出一个子进程用来同步,在数据量比较大的时候,可能会非常耗时。

2、AOF
在配置文件中找到appendonly,将no修改为yes,appendfilename为存储的文件名称
通过修改appendfsync设置同步机制:
appendfsync always:每次有数据更新操作,都会同步到文件中
appendfsync everysec:每秒进行一次更新
appendfsync no:使用操作系统的方式进行更新,大多数都是30s更新一次

存储的的执行的更新数据的操作命令,不会进行压缩

优点:
(1)AOF的策略是每秒钟或者每次发生写操作的时候都会同步,因此即使服务器故障,最多只会丢失1秒的数据。
(2)AOF存储的是Redis命令,并且是直接追加到aof文件后面,因此每次备份的时候只要添加新的数据进去就可以了。
(3)如果AOF文件比较大了,那么Redis会进行重写,只保留最小的命令集合

缺点:
1)AOF文件因为没有压缩,因此体积比RDB大。
2)AOF是在每秒或者每次写操作都进行备份,因此如果并发量比较大,效率可能有点慢。
3)AOF文件因为存储的是命令,因此在灾难恢复的时候Redis会重新运行AOF中的命令,速度不及RDB

redis安全机制:
在配置文件中,设置requirepass password ,连接的时候就需要使用密码:
eg:设置密码为admin; requirepass admin,通过auth admin 进行授权,要不然即使登陆上去了也无法进行操作

登陆命令: redis-cli -p6379 127.0.0.1 -a admin

redis其他机器连接服务:
修改配置项:bind 127.0.0.1 为bind 127.0.0.1 192.168.200.15

python 连接redis:
1、安装python-redis
pip install python-redis

2、初始化redis实例
from redis import Redis
xtredis = Redis(host=‘192.168.174.130’,port=6379)

2、操作:
xtredis.set(‘username’,‘xiaotuo’,ex=60)
xtredis.get(‘username’)
xtredis.delete(‘username’)
xtredis.set(‘read_count’,1)
xtredis.incr(‘read_count’)  # 这时候read_count变为2
xtredis.decr(‘read_count’) # 这时候read_count变为1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
尚硅谷是一个教育机构,他们提供了一份关于Redis学习笔记。根据提供的引用内容,我们可以了解到他们提到了一些关于Redis配置和使用的内容。 首先,在引用中提到了通过执行命令"vi /redis-6.2.6/redis.conf"来编辑Redis配置文件。这个命令可以让你进入只读模式来查询"daemonize"配置项的位置。 在引用中提到了Redis会根据键值计算出应该送往的插槽,并且如果不是该客户端对应服务器的插槽,Redis会报错并告知应该前往的Redis实例的地址和端口。 在引用中提到了通过修改Redis的配置文件来指定Redis的日志文件位置。可以使用命令"sudo vim /etc/redis.conf"来编辑Redis的配置文件,并且在文件中指定日志文件的位置。 通过这些引用内容,我们可以得出结论,尚硅谷的Redis学习笔记涵盖了关于Redis的配置和使用的内容,并提供了一些相关的命令和操作示例。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Redis学习笔记--尚硅谷](https://blog.csdn.net/HHCS231/article/details/123637379)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Redis学习笔记——尚硅谷](https://blog.csdn.net/qq_48092631/article/details/129662119)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值