Redis 安装,配置以及数据操作

 


Nosql介绍#

Nosql:一类新出现的数据库(not only sql)的特点

1
2
3
4
5
6
7
8
不支持SQL语法
存储结构跟传统关系型数据库中那种关系表完全不同,nosql中存储的数据都是k-v形式
Nosql的世界中没有一种通用的语言,每种nosql数据库都有自己的api和语法,以及擅长的业务场景
Nosql中的产品种类相当多:
    Mongodb
    Redis
    Hbase hadoop
    Cassandra hadoop

Nosql与SQL数据库的比较

1
2
3
适用场景不同:sql数据库适合用于关系特别复杂的数据库查询场景,nosql反之
“事务”特性的支持:sql对事务的支持非常完善,而nosql基本不支持事务
两者在不断的取长补短,呈现融合趋势

Redis介绍#

Redis官方参考文档获取详细的Redis操作  http://doc.redisfans.com/

redis是一个key-value存储系统。和Memcached类似,它支持存储的values类型相对更多,包括字符串、列表、哈希散列表、集合,有序集合。

这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步,也即是说redis支持数据备份

本质:将数据保存在内存中

用途:redis可以做缓存;redis可以做消息队列

特性:

  • 可以做持久化:在配置文件设置,如果你要保存到文件,可添加设置,就算电脑不小心关机了,数据还是在的。这个要不要保存都是自己来定的。
  • 支持存放数据的格式多(5种格式)
1
2
3
4
5
6
7
8
9
10
{
    'k1':'hiayna',  #第一种字符串格式
    'k2':[11,22,33,44], #第二种列表格式
    'k3':{11,22,33,44}, #第三种集合格式
    'k4':{                 #第四种,字典,也可以叫做哈希散列表,
            'n1':'xxx',
            'n2':'fff'
        },
    'k5':{(11,1),('xxx':5)} #有序集合
}

相关问题#

为什么要使用redis?使用redis有哪些好处?#

1
2
3
4
性能极高    Redis能读的速度是110000次/s,写的速度是81000次/s
丰富的数据类型    Redis支持二进制案例的Strings,Lists,Hashes,Sets及Ordered Sets数据类型操作
原子     Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子执行(原子性是指没有线程,进程那种相互竞争的概念)
丰富的特性   Redis还支持publish/subscribe,通知,key过期等等特性

redis相比memcached有哪些优势?#

1
2
3
memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型
redis的速度比memcached快很多
redis可以持久化其数据

redis的应用场景#

1
2
3
4
用来做缓存(ehcache/memcached)——redis的所有数据都是放在内存中的(内存数据库)
可以在某些特定应用场景下替代传统数据库——比如社交类的应用
在一些大型系统中,巧妙地实现一些特定的功能:session共享,购物车
只要你有丰富的想象力,redis可以帮你实现很多非常棒的功能

redis的安装#

当前redis最新版本是4.0,它是一个测试版本,稳定版本是3.2版本

方式一:硬盘免安装

复制代码
wget http://download.redis.io/releases/redis-3.2.8.tar.gz  #下载
tar xzf redis-3.2.8.tar.gz  #解压
sudo mv ./redis-3.2.8 /usr/local/redis 复制放到usr/local目录下 cd /us
cd usr/local/redis #切换到redis目录下 sudo make #生成 因为是c语言写的所有需要编译
sudo make test 测试,这段运行时间较长
sudo make install 安装,将redis的命令安装到/usr/local/目录
sudo /uer/local/bin/ 安装完成后进入目录/usr/local/bin中查看
ls -a
cd /usr/local/redis/
ls
sudo cp redis.conf /etc/redis/redis.conf 将配置文件移动到etc目录下

sudo vi /etc/redis/redis.conf 进行配置
#绑定ip:如果需要远程访问,可将此行注释,或绑定一个真实的ip
bind 127.0.0.1
#端口,默认是6379
port 6379
#是否以守护进程运行
  如果以守护进程运行,则不会在命令行阻塞,类似于服务
  如果以非守护进程运行,则当前终端被诸塞
  设置yes表示守护进程,设置为no表示非守护进程
  推荐设置成 yes
daemonize yes
#数据文件
dbfilename dump.rdb
#数据文件存储路径
dir /var/lib/redis 一开始是默认的./ 自定义的话需要先创建这个路径
#日志文件
logfile /var/log/redis/redis-server.log 一开始默认是没有的,需要手动建立一个目录放日志文件
#数据库,默认有16个
database 16
#主从复制
slaveof
复制代码

简单介绍一下文件

1
2
3
4
5
redis-server        redis服务器
redis-cli            redis命令行客户端
redis-benchmake           redis性能测试工具
redis-check-aof        AOF修复工具
reids-check-rdb       RDB文件检索工具(redis持久化就是用的rdb文件)

启动服务端与客户端#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
redis-server --help   获取启动的帮助命令
推荐使用服务的方式管理redis服务
 
启动
sudo service redis start
停止
sudo service redis stop
重启
sudo service redis restart
 
如果是按之前配置,自定义过后就不能用上面的方式了
sudo  redis-service  /etc/redis/redis.conf   指定加载的配置文件
 
ps aux | grep redis   查看redis服务器进程
sudo kill -9 pid   杀死redis服务器
 
 
客户端
redis-cil --help  获取客户端帮助命令
redis-cli   可以直接启动,ip和端口都是默认的
 
ping   运行测试命令
 
切换数据库
默认是0号数据库
select index

数据操作#

redis是key-value的数据结构,每条数据都是一个键值对

键的类型是字符串

注意:不能重复

值的类型分为五种  字符串string   哈希hash  列表list    集合set  有序集合zset

数据操作行为#

保存   修改  获取   删除

点击中文官方文档查看命令文档  http://redis.cn/commends.html

strings类型#

字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述性息等。在Redis中字符串类型的Value最多可以容纳的数据长度是512M

保存

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
如果设置的键不存在则为添加,如果设置的键已经存在则修改
设置键值
set key  value
查看是否有值
key *    (空的返回empty list or set)
查看键值
get key
修改键值就是重新设置
 
设置键值及过期时间,以秒为单位
setex key seconds value
设置多个键值
mset key1 value1 key2 value2 .
追加值(就是在值的尾部拼接上)
append key value

获取

1
2
3
4
5
获取 根据键获取值,如果不存在此键则返回nil
get  key
 
根据键获取多个值
mget key1 key2 ...

删除

键命令(支持所有数据类型)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
查找键,参数支持正则表达式
keys pattern    例如key *       key   'a*'
判断键是否存在,如果存在返回1,不存在返回0
exists  key1
查看键对应的value的类型
type key
 
删除键以及对应的值
del key1 key2
 
设置过期时间,以秒为单位
如果没有指定过期时间则一直存在,直到使用DEL移除
expire key seconds
 
查看有效时间,以秒为单位
ttl  key

hash#

hash用于存储对象,对象的结构为属性,值

值的类型为strings

增加,修改

1
2
3
4
5
6
7
8
9
10
11
12
13
设置单个属性
hset key  filed  value
 
可能会报错   一串英文
 
Redis被配置为保存数据库快照,但它目前不能持久化到硬盘。用来修改集合数据的命令不能用
原因:
    强制关闭Redis快照导致不能持久化。解决方案:
    运行config set stop-writes-on-bgsave-error no  命令后,关闭配置项stop-writes-on-bgsave-error解决该问题
 
 
设置多个属性
hmset key field1 value1 field2 value2

获取

1
2
3
4
5
6
7
8
9
10
11
获取指定键所有的属性
hkeys key
 
获取一个属性的值
hget key field
 
获取多个属性的值
hmget key field1 field2...
 
获取所有属性的值
hvals key 

删除

1
2
3
删除整个hash键及值,使用del命令
删除属性,属性对应的值会被一起删除
hdel key field1 field2 

list#

列表的元素类型为string

按照插入顺序排序

增加

1
2
3
4
5
6
7
8
9
10
11
12
在左侧插入数据
lpush key value1 value2
 
查看插入的数据
lrange key index(start) index(end)
 
在右侧插入数据
rpush key value1 value2
 
 
在指定元素的前后插入新元素
linsert key before或after   现有元素   新元素 

获取

1
2
3
4
5
返回列表里指定范围内的元素
    start,stop为元素的下表索引
    索引从左侧开始,第一个元素为0
    索引可以是负数,表示从尾部开始计数,如-1表示最后一个元素
lrange key start  stop 

设置指定索引位置的元素值

索引从左侧开始,第一个元素为0

索引可以是负数,表示尾部开始计数,如-1表示最后一个元素

lset key index value

删除

1
2
3
4
5
6
删除指定元素
    将列表中前count次出现的值value的元素移除
    count > 0: 从头往尾移除
    count <0: 从尾往头移除
    count = 0: 移除所有
lrem key count value

set类型#

1
2
3
4
无序集合
元素为string类型
元素具有唯一性,不重复
说明:对于集合没有修改操作

增加

1
2
添加元素
sadd key member1 member2 

获取

1
2
返回所有元素
smembers key 

删除

1
2
删除指定元素
srem key

zset类型#

1
2
3
4
5
sorted set ,有序集合
元素为string类型
元素具有唯一性,不重复
每个元素都会关联一个 double类型的score,表示权重,通过权重将元素从小到大排序
说明:没有修改操作

增加

1
2
添加
zadd key score1 member1 score2 member2  

获取

1
2
3
4
5
6
7
8
9
10
11
12
13
14
返回指定范围的元素
start,stop为元素的下标索引
索引从左侧开始,第一个元素为0
索引可以是负数,表示从尾部开始计数,如-1表示最后一个元素
 
zrange key start stop
 
 
返回score值在min和max之间的成员    (包括min和max本身)
zrangebyscore key min max
 
 
返回成员member的score值
zscore key member 

删除

1
2
3
4
5
6
删除指定元素
zrem key member1 member
 
 
删除权重在指定范围的元素
zremrangebyscore key min max

  

posted @   鲸鱼的海老大  阅读(281)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示
CONTENTS