首页 > 数据库 >redis在linux的操作

redis在linux的操作

时间:2023-04-17 16:34:45浏览次数:43  
标签:cli 单线程 redis --- 命令 key linux 操作

redis

redis特性

  • 速度快,10w ops(秒读写)数据都是内存操作,c语言实现。
  • 单线程模型,所有的读写是同步的,不会出现脏读脏写
  • 持久化:rdb和aof策略
  • 多种数据结构:5大数据结构
  • 支持多种编程语言:基于tcp通信协议,各大编程语言都支持通信
  • 功能丰富:发布订阅(消息) Lua脚本,事务(pipeline)
  • 操作简单:不依赖外部库,自身功能足够强大
  • 主从复制:主服务器和从服务器,主服务器可以同步到从服务器中
  • 支持高可用和分布式

linux安装部署

# 1 下载(源代码,c)
wget http://download.redis.io/releases/redis-6.2.9.tar.gz
#2 解压
tar -xzf redis-6.2.9.tar.gz
#3 建立软连接
ln -s redis-6.2.9 redis
cd redis
make&&make install
#4 在src目录下可以看到
    #redis-server--->redis服务器
    #redis-cli---》redis命令行客户端
    #redis-benchmark---》redis性能测试工具
    #redis-check-aof--->aof文件修复工具
    #redis-check-rdb---》rdb文件检查工具
    #redis-sentinel---》sentinel服务器,哨兵
    #redis作者对windows维护不好,window自己有安装包
    
# ####卸载redis
# 1、查看redis进程;
ps aux|grep redis
# 2、kill掉进程;
kill 进程id
# 3、进入到redis目录
cd /usr/local/
# 4、删除redis对应的文件
rm -f /usr/local/redis/bin/redis*
rm -f /usr/local/bin/redis*
# 5、删除对应的文件
rm -rf redis

现在也支持通过yum命令一键下载部署的方式。

redis-server启动

3.1 最简启动

#最简启动
redis-server
ps -ef|grep redis  #查看进程
#yum install net-tools -y
netstat -antpl|grep redis #查看端口
redis-cli -h ip -p port ping #命令查看

3.2 动态参数启动

#动态参数启动
redis-serve --port 6380 #启动,监听6380端口

3.3 配置文件启动

# 默认配置文件:是redis文件夹下的redis.conf

# 自定义配置文件启动
#####通过redis-cli连接,输入config get * 可以获得默认配置
#自己手创一个myredis.conf文件
#daemonize--》是否是守护进程启动(no|yes)
#port---》端口号
#logfile--》redis系统日志
#dir--》redis工作目录


daemonize yes
pidfile /var/run/redis.pid
port 6379
dir "/root/redis/data"
logfile 6379.log
# 创建data文件夹
mkdir data  # 按照上面的路径创建一个存data的工作目录
# 启动
redis-server myredis.conf

客户端连接命令

redis-cli -h 地址 -p 端口
redis-cli -h 127.0.0.1 -p 6379 
redis-cli -h 127.0.0.1 -p 6379  info  # info是redis交互的一个命令,但是如果直接在客户端连接后跟交互命令,那么不进入交互环境,直接拿到结果

CONFIG GET *  # 获取redis的配置信息
# 只需要关注 dir,port,daemonize等
# requirepass 设置的密码是什么,如果是空,没有密码
# 直接修改redis的配置信息,修改后同步到硬盘,永久生效
CONFIG SET requirepass 123456  # 设置密码配置
CONFIG REWRITE # 将改动的配置写到硬盘上了

# 当redis设置密码后,必须使用如下两种方式验证才能进行其他命令操作
	-方式一:直接连接,指定密码:redis-cli -a 123456
    -方式二:先连接进去redis-cli,再执行r  auth 密码
    

# redis配置文件:
	# bind    127.0.0.1  0.0.0.0
    # port   端口
    # requirepass  密码
    # dir  工作目录
	# logfile 日志文件
    # daemonize 是否以守护进程运行
    # pidfile 放的是进程id号
    # maxmemory 可以使用的最大内存
    # databases  有多少个库
    # dbfilename  rdb的持久化方案的存储文件dump.rdb

redis典型场景

  • 缓存系统:使用最广泛的就是缓存
  • 计数器:网站访问量,转发量,评论数(因为是单线程模型,所以不会出现并发安全问题)
  • 消息队列:发布订阅,阻塞队列实现(简单的分布式,blpop:阻塞队列,生产者消费者) -- celery的消息队列就可以用到
  • 社交网络:很多特效跟社交网络匹配,粉丝数,关注数,简单的推荐
  • 实时系统:垃圾邮件处理系统,黑白名单系统
  • 地理位置信息:附近的人

redis通用命令

打印key

打印所有的key

keys *

打印出以he开头的key

keys he*

打印出所有以he开头,第三个字母是h到l的字母的key值

keys he[h-l]

实际上keys后的表达式和正则表达式很像,就是匹配所有符合表达式的key

keys指令不要在生产环境下执行,因为redis就这一个线程,被这个命令占据的话会很影响业务

计算key的总数

redis内置了计数器,所以相当于直接把key的总数查出来了

dbsize

值操作

查看值

get key

设置值

set key value [expiration EX seconds|PX milliseconds] [NX|XX]

查看key是否存在

exists key
(integer) 1
# 存在返回1 不存在返回0

删除值

del key
(integer) 1
# 删除成功返回1 不存在返回0

设置值的过期时间

expire key seconds
expire name 3  # name3s后过期
ttl name  # 查看name还有多长时间过期
persist name # 去掉name的过期时间

查看key值的类型

type name

其他命令

info命令:内存,cpu,主从相关
client list  正在连接的会话
client kill ip:端口
dbsize  总共有多少个key
flushall  清空所有
flushdb  只清空当前库
select 数字  选择某个库  总共16个库
monitor  记录操作日志,停止交互,只显示输出日志,能看到操作地址、操作内容等

内部编码和redis架构

数据结构和内部编码

五大数据类型还可以继续细分不同的内置编码

image

单线程架构

单线程架构,

一个瞬间只会执行一条命令,所有的命令任务都是排着队的

单线程为什么这么快

是指单线程下为什么并发还挺高

  1. 纯内存操作
  2. 非阻塞IO (epoll),自身实现了事件处理,不在网络io上浪费过多时间
  3. 避免线程间切换和竞态消耗

注意

  • 1 一次只运行一条命令

  • 2 拒绝长慢命令

    -keys,flushall,flushdb,慢的lua脚本,mutil/exec,operate,big value

  • 3 其实不完全是单线程,但是数据操作部分就是单线程的(在做持久化是另外的线程)

    -fysnc file descriptor

    -close file descriptor

标签:cli,单线程,redis,---,命令,key,linux,操作
From: https://www.cnblogs.com/Leethon-lizhilog/p/17326273.html

相关文章

  • 爬取的数据存mysql中、加代理,cookie,header,加入selenium、布隆过滤器、scrapy-redis实
    上节回顾#1scrapy架构 -爬虫:写的一个个类-引擎: -调度器:排队,去重-下载器-pipline-下载中间件-爬虫中间件#2命令 -scrapystartproject项目名-scrapygensipder爬虫名网址-scrapycrawl爬虫名字-run.py#......
  • linux_virtual_env
    虚拟环境+工具链CygwinMSYSWSL仅工具链MinGW安装:验证:特点:TMD-GCC安装:官网找最新版下载安装即可验证:gcc-v(正确输出:specsCOLLECT_GCC=D:\Software\TDM-GCC-64\bin\gcc.exeCOLLECT_LTO_WRAPPER=D:/Software/TDM-GCC-64/bin/../libexec/gcc/x86_64-w64-mingw32/10.......
  • 强制linux修改密码
    强制Linux用户在下次登录时更改密码原创 入门小站 入门小站 2023-04-1421:30 发表于湖北收录于合集#Linux761个入门小站分享运维技巧及10k+Stars的开源项目236篇原创内容公众号密码管理是保持安全的重要一环。为了确保您的Linux系统的安全性,可能需......
  • 1 redis介绍 、2 redis linux下安装 、3 redis启动方式、4 redis典型场景 、5 redis通
    目录1redis介绍2redislinux下安装3redis启动方式3.1最简启动3.2动态参数启动3.3配置文件启动3.4客户端连接命令4redis典型场景5redis通用命令6数据结构和内部编码7redis字符串类型1redis介绍#特性Redis特性(8个)#速度快:10wops(每秒10w读写),数据存在内存中,c语言实现......
  • 学习笔记398—CentOS 7版本的Linux网络设置
    CentOS7版本的Linux网络设置一、ifconfig命令查看网络接口信息1、当ifconfig命令不带人和选项和参数时,将显示当前主机中以启用的网络接口信息。如图我们执行“ifconfig”命令可以看到ens33、lo以及vibro三个网络接口的信息 上图中ens33对应为第1块物理网卡;lo对应为虚拟的回环网卡......
  • linux系统安全审计脚本
    Linux系统安全审计脚本原创 李逸皓 运维book思议 2023-03-0813:46 发表于北京收录于合集#linux56个#脚本44个#shell41个#系统安全4个先放个链接,万一有人关注呢运维book思议李小白,一个北漂的运维。希望能够通过本公众号与业内各位大神交流技术问题。62......
  • python中列表常见的操作方法
    一、添加元素的方法1.append()方法#l.append()用于在列表末尾添加新的对象,返回值:该方法无返回值,但是会修改原来的列表l=[1,2,3,4,5]l1=[6,7,8]l2={"age":"12"}l3='年后,nihao'l4=('height','name')#增加列表l.append(l1)print(l)#......
  • Linux - 删除文件名乱码的文件
    问题出现了乱码的文件名:??iA?,没办法通过文件名删除(复制文件名然后rm无效)。解决#获取该文件的节点号$ls-i167557??iA?#通过finddelete参数删除该文件$find-inum167557-delete问题解决。......
  • Vue3中 如何使用ref标签,对组件进行操作
    在Vue2中一般用this.$ref.xxxx进行获取组件对象Vue3中就不使用这个方法了例如:<el-uploadclass="upload-demo"action="":http-request="handleUpload":on-change="handleChange":before-upload="handl......
  • Linux离线安装jdk
    1、官网下载相应的jdkhttps://www.oracle.com/2、将jdk包上传到服务器并解压3、设置环境变量vi/etc/profileexportJAVA_HOME=/opt/jdk-20exportPATH=$PATH:$JAVA_HOME/binsource/etc/profile4、检查是否安装成功......