服务(第二十四篇)redis安装和数据类型

文章介绍了关系型数据库与非关系型数据库的主要区别,如存储结构、扩展方式和事务处理。接着详细讨论了Redis这一非关系型数据库,强调其速度快的原因,如内存存储和IO多路复用,并介绍了Redis的命令工具如redis-cli和redis-benchmark。此外,还列举了Redis的数据类型和常用命令,以及处理错误的方法,最后提供了几个Redis操作示例。
摘要由CSDN通过智能技术生成

关系型数据库和非关系型数据库的区别:

①存储结构不同,关系型数据库是二维表格的方式,非关系型数据库是键值对的形式(文档、图文等);

②扩展方式不同,关系型数据库是纵向提升硬件性能,非关系型数据库是横向增加节点服务器;

③事务形式,关系型数据库支持sql语句处理复制查询和操作,更加精准,非关系型数据库只支持简单的事务操作。

非关系型数据库的数据类型:

①string 字符串类型

②hash散列类型

③list列表类型

④set无序集合

⑤zset有序集合

redis为什么这么快?

①redis是纯内存结构,数据操作都是在内存中完成的;

②采用i/o多路复用,提高线程处理更多的连接请求;

③数据采用单线程模式,可以减少多线程切换的消耗,也不用考虑锁的性能消耗。

Redis 命令工具:

①redis-cli:

语法:redis-cli -h host -p port [-a password]
-h :指定远程主机
-p :指定 Redis 服务的端口号
-a :指定密码,未设置数据库密码可以省略-a 选项
若不添加任何选项表示,则使用 127.0.0.1:6379 连接本机上的 Redis 数据库

②redis-benchmark:

基本的测试语法:redis-benchmark [选项] [选项值]。
-h :指定服务器主机名。
-p :指定服务器端口。
-s :指定服务器 socket
-c :指定并发连接数。 
-n :指定请求数。
-d :以字节的形式指定 SET/GET 值的数据大小。
-k :1=keep alive 0=reconnect 。
-r :SET/GET/INCR 使用随机 key, SADD 使用随机值。
-P :通过管道传输<numreq>请求。
-q :强制退出 redis。仅显示 query/sec 值。
--csv :以 CSV 格式输出。
-l :生成循环,永久执行测试。
-t :仅运行以逗号分隔的测试命令列表。
-I :Idle 模式。仅打开 N 个 idle 连接并等待。
 

#向 IP 地址为 192.168.169.10、端口为 6379 的 Redis 服务器发送 100 个并发连接与 100000 个请求测试性能
redis-benchmark -h 192.168.169.10 -p 6379 -c 100 -n 100000

#测试存取大小为 100 字节的数据包的性能
redis-benchmark -h 192.168.169.10 -p 6379 -q -d 100

#测试本机上 Redis 服务在进行 set 与 lpush 操作时的性能
redis-benchmark -t set,lpush -n 100000 -q


清除数据库内数据
FLUSHDB :清空当前数据库数据
FLUSHALL :清空所有数据库的数据,慎用!

错误修正:

在redis中添加list,字符串类型的键值对之后,redisDeskManager上提示了一些错误信息:

MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error 大概意思是:Redis被配置为保存数据库快照,但它目前不能持久化到磁盘。用来修改集合数据的命令不能用。请查看Redis日志的详细日志信息。
 

方法:

在命令行添加:

127.0.0.1:6379> config set stop-writes-on-bgsave-error no

数据类型:

①string字符串类型:最基本的类型,最大能存储512MB的数据,String类型是二进制安全的,即可以存储任何数据、比如数字、图片、序列化对象等;

set:为键设置新值,并覆盖原有值;

get:获取键的值;

strlen:获取指定值的长度;

exists:判断键是否存在;

incr:键值递增1;

decr:键值递减1;

del:删除已有键;

incrby:递增指定整数;

decrby:递减指定整数;

expire(setex):为键设置生命周期;

ttl:查看键的生命周期;

mset:设置多个键;

mget:查看多个键;

②list列表类型:列表的元素类型为string,按照插入顺序排序,在列表的头部或尾部添加元素

lpush:+键 +多个值 ;

lrange:+键 0 -1 查看所有(0 2 查看第一个到第三个);

del:删除键;

lpop/rpop:移除并返回mykey键的左边/右边第一个元素;

llen:查看长度;

lindex:获取第几个索引的值;

linsert 键 before/after 旧值  新值:在旧值前面/后面插入新值;

③hash散列类型:hash用于存储对象。可以采用这样的命名方式:对象类别和ID构成键名,使用字段表示对象的属性,而字段值则存储属性值

hset:为键设置新值,并覆盖原有值;

hget:获取键的值;

hstrlen:获取指定值的长度;

hexists:判断键是否存在;

hincr:键值递增1;

hdecr:键值递减1;

del:删除已有键;

hincrby:递增指定整数;

hdecrby:递减指定整数;

hexpire(setex):为键设置生命周期;

hmset:设置多个键;

hmget:查看多个键;

hkeys:获取所有字段的名字;

hvals:获取所有字段的值;

④set无序集合:元素具有唯一性,不允许存在重复的成员。多个集合类型之间可以进行并集、交集和差集运算。

sadd:+键  +多个值 ;

sismember:+键  +多个值  判断是否存在这个值;

smembers:查看所有的值;

scard:获取Set集合中元素的数量;

spop:随机的移除并返回Set中的某一成员;

srem myset a d f:从Set中移出a、d和f三个成员,其中f并不存在,因此只有a和d两个成员被移出,返回为2;

smove myset myset2 a:将a从myset移到myset2,从结果可以看出移动成功;

⑤zset有序集合:有序集合,元素类型为Sting,元素具有唯一性,不能重复

zadd:+键  +多个值 ;

zrange myzset 0 -1 WITHSCORES:0表示第一个成员,-1表示最后一个成员。WITHSCORES选项表示返回的结果中包含每个成员及其分数,否则只返回成员;

zrank myzset one :取成员one在Sorted-Set中的位置索引值。0表示第一个位置;

zrem:删除;

zincrby:成员不存在,zincrby命令将添加该成员并假设其初始分数;

zcard:查看是否删除成功;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值