Redis五大基本数据类型和三大特殊数据类型
Redis
- nosql讲解
- 阿里巴巴架构演进
- nosql数据模型
- Redis入门
- Redis安装(windows&linux)
Nosql概述
很多的数据类型用户的个人信息, 社交网络,地理位置。这些数据类型的存储不需要一个固定的格式 !不需要多月的操作就可以横向扩展的! Map
NOSQL特点
-
方便扩展(数据之间没有关系,很好扩展!)
-
大数据量高性能
-
数据类型是多样型的
-
传统RDBMS和nosql
传统的RDBMS和nosql -结构化组织 -SQL -数据和关系都存在单独的表中 -操作,数据定义语言 -严格一致性 -基础事务nosql -不仅仅是数据 -没有固定的查询语句 -键值对存储,列存储,图形数据库(社交关系) -高性能,高可用,高扩展大数据时代的3V:主要是描述问题的
1.海量 volume
2.多样
3.实时
三高
高并发
高扩展
高性能
安装
先安装 gcc-c++
yum install gcc-c++make
make install
报错:
1 make[1]: *** [server.o] Error 1
原因是因为gcc版本过低,yum安装的gcc是4.8.5的。因此需要升级gcc,升级过程如下:
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
#这句是临时的
scl enable devtoolset-9 bash
#修改环境变量
echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile
gcc -v
redis的默认安装路径/usr
[root@master redis-6.0.5]# cd /usr/
[root@master usr]# ls
bin games lib libexec sbin src
etc include lib64 local share tmp
[root@master usr]# cd local/
[root@master local]# ls
bin etc games include lib lib64 libexec sbin share src
[root@master local]# cd bin/
[root@master bin]# ls
redis-benchmark redis-check-rdb redis-sentinel
redis-check-aof redis-cli redis-server
[root@master bin]# pwd
/usr/local/bin
测试
#测试:100并发 100000请求
redis-benchmark -h localhost -p 6379 -c 100 -n 100000
基础知识
redis默认有十六个数据库
默认使用的是第0个
可以使用select进行切换
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MGhcHnmO-1596033904628)(C:\Users\diudiu\AppData\Roaming\Typora\typora-user-images\image-20200720192839962.png)]
redis是单线程 (6379 粉丝效应)
明白redis是很快的,官方表示,redis是基于内存操作,CPU不是redis性能瓶颈,redis的瓶颈是根据机器的内存和网络带宽,既然可以使用单线程来实现,就使用单线程了!所以就使用了单线程
redis是C语言写的,官方提供的数据为100000的QPS,完全不比同样是使用key-value的memecache差!
redis为啥单线程还这么快
1误区1:高性能的服务器一定是多线程?
2误区2:多线程(cpu上下文切换)一定比单线程效率高
核心:redis是将所有的数据全部放在内存中的,所有说使用单线程去操作效率就是最高的,多线程(cpu上下文切换:耗时操作),对于内存系统来说,如果没有上下切换效率就是最高的!多次读写都在一个CPU上,在内存情况下这个就是最佳方案
五大数据类型
Redis是一个开源( BSD许可)的,内存中的数据结构存储系统,它可以用作 数据库 、缓存和消息中间件MQ。它支持多种类型的数据结构,如字符串( strings),散列(hashes) ,列表(lists),集合(sets) ,有序集合( sortedsets)与范围查询,bitmaps,hyperloglogs 和地理空间( geospatial )索引半径查询。Redis 内置了复制( replication) , LUA脚本(Luascripting) , LRU驱动事件( LRU eviction) , 事务( transactions )和不同级别的磁盘持久化( persistence ) , 并通过Redis哨兵( Sentinel )和自动分区( Cluster )提供高可用性( high availability )。
redis-key
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> set age 1
OK
127.0.0.1:6379> keys *
1) "age"
127.0.0.1:6379> EXISTS age
(integer) 1
127.0.0.1:6379> EXISTS age1
(integer) 0
127.0.0.1:6379> MOVE age
(error) ERR wrong number of arguments for 'move' command
127.0.0.1:6379> MOVE age 1
(integer) 1
127.0.0.1:6379> set name qwc
OK
127.0.0.1:6379> get name
"qwc"
127.0.0.1:6379> EXPIRE name 10
(integer) 1
127.0.0.1:6379> ttl name
(integer) 6
127.0.0.1:6379> ttl name
(integer) 5
127.0.0.1:6379> ttl name
(integer) 4
127.0.0.1:6379> ttl name
(integer) 3
127.0.0.1:6379> ttl name
(integer) 2
127.0.0.1:6379> ttl name
(integer) 1
127.0.0.1:6379> ttl name
(integer) 1
127.0.0.1:6379> ttl name
(integer) -2
127.0.0.1:6379> get name
(nil)
string(字符串)
##################################################################
127.0.0.1:6379> set key1 v1 #设置值
OK
127.0.0.1:6379> get key1 #获取值
"v1"
127.0.0.1:6379> keys *
1) "key1"
127.0.0.1:6379> EXISTS key1 #是否存在
(integer) 1
127.0.0.1:6379> APPEND key1 hello #追加
(integer) 7
127.0.0.1:6379> get key1
"v1hello"
127.0.0.1:6379> STRLEN key1 #获取长度
(integer) 7
127.0.0.1:6379> APPEND key1 ,qwc
(integer) 11
127.0.0.1:6379> get key1
"v1hello,qwc"
##################################################################
#i++
#步长
127.0.0.1:6379> set views 0
OK
127.0.0.1:6379> get views
"0"
127.0.0.1:6379> incr views
(integer) 1
127.0.0.1:6379> incr views
(integer) 2
127.0.0.1:6379> get views
"2"
127.0.0.1:6379> DECR views
(integer) 1
127.0.0.1:6379> DECR views
(integer) 0
127.0.0.1:6379> DECR views
(integer) -1
127.0.0.1:6379> INCR views
(integer) 0
127.0.0.1:6379> INCRBY views 10
(integer) 10
127.0.0.1:6379
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
