redis数据库简介及其数据结构简单操作

本文介绍了Redis这一内存型NoSQL数据库的基本概念、安装配置方法及常见数据类型的使用技巧。

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

1.  Redis

1.1  nosql介绍

nosql是一类新出现的数据库(not only sql),非关系型数据库,它的特点:

l  不支持SQL语法;

l  存储结构跟传统关系型数据库中的那种关系表完全不同,nosql中存储的数据都是KV形式;

l  NoSQL的世界中没用一种通用的语言,每种nosql数据库都有自己的api和语法,以及擅长的业务场景;

l  NoSQL中的产品种类相当多:Mongodb,  Redis, Hbase Hadoop,  Cassandra Hadoop

1.2 NoSQL和SQL数据库的比较:

l  适用场景不同:sql数据库适合用于关系特别复杂的数据查询场景,nosql反之;

l  “事务”特性的支持:sql对事务的支持非常完善,而nosql基本不支持事务;

l  两者在不断地取长补短,呈现融合趋势

1.3  Redis简介

Redis是一个内存型(也支持数据的持久化)的key-value类型数据库。经常用来做缓存。

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。Redis是 NoSQL技术阵营中的一员,它通过多种键值数据类型来适应不同场景下的存储需求。

1.4  Redis特性

Redis 与其他 key - value 缓存产品有以下三个特点:

l  Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

l  Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

l  Redis支持数据的备份,即master-slave模式的数据备份。

性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。

用来做缓存(ehcache/memcached)——redis的所有数据是放在内存中的(内存数据库)。

1.5  配置

Redis的配置信息在/etc/redis/redis.conf下,查看:

sudo vi/etc/redis/redis.conf

核心配置选项:

绑定ip:如果需要远程访问,可将此注释,或绑定个真实ipbind 127.0.0.1

,默认为6379port 6379

·        是否以守护进程运⾏:如果以守护进程运,则不会在命令阻塞,类似于服务;如果以守护进程运,则当前终端被阻塞;设置为yes表示守护进程,设置为no表示守护进程;推荐设置为yesdaemonize yes

数据件;dbfilename dump.rdb

数据件存储路径;dir /var/lib/redis

件;logfile/var/log/redis/redis-server.log

数据库,默认有16个;database 16

主从复制,类似于双机备份。Slaveof

2.  了解Redis服务器端和客户端的命令

2.1  服务器端

服务器端的命令为redis-server

可以使help查看帮助档;redis-server –help

推荐使服务的式管理redis服务

启动;sudo service redis start

⽌;sudo service redis stop

重启 sudo service redis restart

个人习惯

ps -ef|grep redis 查看redis服务器进程
sudo kill -9 pid
杀死redis服务器
sudo redis-server /etc/redis/redis.conf
指定加载的配置文件

2.2  客户端

l  客户端的命令为redis-cli

可以使help查看帮助档;redis-cli --help

连接redisredis-cli

测试命令;ping

切换数据库;数据库没有名称,默认有16个,通过0-15来标识,连接redis默认选择第一个数据库;select n

==============
redis数据库: |
==============
需要记的一些东西:
==================
1. redis数据库是一个非关系型的数据库
2. redis的数据是存储在内存中的
3. redis可以将数据从内存中读取出来并保存到文件, 之后需要的时候再读入内存中, 实现数据的持久化
4. 经常用来做缓存
5. redis的数据类型有五种: string, hash, list, set, zset
6. 具体命令可百度搜索  redis命令参考
服务器启动和数据库连接:
========================
·启动redis服务器:
1. 检查服务器是否已经启动-------->>-: ps aux | grep redis
2. 启动服务器-------------------->>-: sudo redis-server /etc/redis/redis.conf    #格式: sudu + redis-server +配置文件路径
·停止redis服务器:
· 停止redis服务器---------------->>-: sudo kill -9 进程id      #进程id可通过检查服务器是否启动功能查看
·连接redis服务器:
1. 连接redis服务器---------------->>-: redis-cli -h 服务器ip地址 -p 服务器端口号      #默认ip(127.0.0.1) 默认端口号(6379)
2. 测试连接是否成功--------------->>-: 终端输入ping   如果得到返回值PONG, 就是已经连接成功
·数据库切换:
·redis数据库默认有16个, 没有名字, 通过0-15来标识
· 切换数据库---------------------->>-: select 数字
数据类型操作:
==============
· string类型:    string类型是字符串类型, 同时可以以二进制的方式保存图片或者json对象描述信息, 最大可容纳512M内存数据
--------------
查:
· 获取键对应的值----------------->>-: get key
· 获取多个键对应的值------------->>-: mget key1 key2 key3 ......
· 查看所有键--------------------->>-: keys *
· 判断键是否存在----------------->>-: exists key   # 存在返回1, 不存在返回0
· 查看键对应值的类型------------->>-: type key
· 查看键的剩余有效时间----------->>-: ttl key      # 返回-1代表永不过期, 返回-2代表已过期
增: 
· 设置一个键值------------------->>-: set key value   # 如果键不存在,会创建.如果键存在,会更新
· 设置带有过期时间的键值--------->>-: setex key seconds value   # seconds--秒 , 到时间后会被自动删除
· 设置多个键值------------------->>-: mset key1 value1 key2 value2 ......
· 给键的值追加数据--------------->>-: append key value    # value是要追加的字符串内容, 其实就是字符串拼接
删:
· 删除指定键和值----------------->>-: del key1 key2 ......
改:
· 修改key的有效时间-------------->>-: expire key seconds   # seconds--秒
· hash类型: #hash的value存的是属性和属性的值
------------   
增: 
· 设置单个属性-------------------->>-: hset key field value   # field代表属性  value代表属性的值
# 使用hset命令有可能报错, 如果报错执行命令 config set stop-writes-on-bgsave-error no 即可
· 设置多个属性-------------------->>-: hmset key field1 value1 field2 value2 ......
查:
· 获取key的一个属性的值----------->>-: hget key field
· 获取key中多个属性的值----------->>-: hmget key field1 field2 ......
· 获取key的所有属性--------------->>-: hkeys key
· 获取key的所有属性的值----------->>-: hvals key
删:
· 删除key的某些属性--------------->>-: hdel key field1 field2 ......
· list类型:   # 列表的元素只能是string, 而且是按照插入顺序排序
------------
增: 
· 创建一个列表-------------------->>-: rpush key value1 value2 ......
· 在列表左侧插入数据-------------->>-: lpush key value1 value2 ......  #顺序是先把1加入到列表左侧, 再把2加入到1的左侧
· 在列表右侧插入数据-------------->>-: rpush key value1 value2 ......  #顺序是先把1加入到列表右侧, 再把2加入到1的右侧
· 在指定元素的前面加数据---------->>-: linsert key before 指定元素 新加元素
· 在指定元素的后面加数据---------->>-: linsert key after 指定元素 新加元素
查:
· 指定索引范围查询---------------->>-: lrange key 起始索引 终止索引
· 查询列表中所有元素-------------->>-: lrange key 0 -1
改:
· 更改指定索引位置的元素值-------->>-: lset key 索引 value
删:
· 清空列表------------------------>>-: ltrim key 1 0
· 删除所有的指定元素-------------->>-: lrem key 0 value
· 从右往左删除count个value-------->>-: lrem key -count value
· 从左往右删除count个value-------->>-: lrem key count value
· set类型:  无序集合, 元素为string类型, 元素是唯一的不能有重复, 不能进行修改操作
-----------
增:
· 增加元素------------------------>>-: sadd key member1 member2 ......
查:
· 查所有元素---------------------->>-: smembers key
删:
· 删除指定元素-------------------->>-: srem key member1 member2 ......
· zset类型: 
------------ 
增:
· 增加元素------------------------>>-: zadd key score1 member1 score2 member2 ......
#score是权重, 由数字构成, 一一对应后面的member, 权重越小, 对应的member的位置越靠前
查:
· 指定索引范围查询---------------->>-: zrange key start stop
· 查所有元素---------------------->>-: zrange key 0 -1
· 查权重a到权重b之间的元素-------->>-: zrangebyscore key 权重a的索引 权重b的索引
· 查指定元素的权重值-------------->>-: zscore key member
删:
· 删除指定元素-------------------->>-: zrem key member1 member2 ......
· 删除权重a到权重b之间的元素------>>-: zremrangebyscore key 权重a的索引 权重b的索引
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值