redis1
历史:
1、单机mysql:一个mysql来存数据
2、第二次读的时候直接读缓存就行了,有的mysql专门负责读,有的专门负责写
3、表锁:读某一行,就得把整个表锁起来;mysql引擎不同,锁不同,M是主节点,S是从节点
4、
RDBMS是关系型数据库(处理有结构的数据)
nosql(处理非固定结构的数据):
真正在公司的是RDBMS+nosql,如mysql+redis
阿里的数据存储:
通过在上面加一个统一的数据服务层,屏蔽了下面的各个数据库,并在服务层和数据库间加了个缓存
nosql(非关系型):
redis:
linux 安装:它提供的5.0.安装包有问题
程序放到opt下:mv redis-6.2.2.tar.gz /opt
cd /opt
tar -zxvf redis-6.2.2.tar.gz
cd redis-6.2.2/
安装gcc环境:yum install gcc-c++(自己的vmware的centos的yum配置有问题,用阿里云的吧)
make
make install
cd /usr/local/bin
redis默认安装路径:/usr/local/bin
复制配置文件:
mkdir config
cp /opt/redis-6.2.2/redis.conf config/
修改配置文件,使redis默认后台启动:
vi config/redis.conf
通过后面指定的配置文件启动服务:
redis-server config/redis.conf
使用redis客户端连接上:
redis-cli -p 6379
ping
set name asd
get name
查看所有的key:keys *
查看redis进程,ps -ef全格式显示所有进程:
ps -ef | grep redis
关闭redis并退出:shutdown
exit
redis-benchmark性能测试:
先启动服务:redis-server /usr/local/bin/config/redis.conf
然后并发100个连接,每个连接100000,-h指定给哪个服务器发请求:
redis-benchmark -h localhost -p 6379 -c 100 -n 100000
默认有16个数据库
操作key的:
是否存在:exists name
删掉key:del name
设置该key存活10s:expire name 10
查看该key还能活几秒:ttl name
查看key的类型:type name
5大类型:String、List、Set、Hash、Zset
String:
append在原字符串后附加内容:
字符长度:
STRLEN key1
incr、decr、incrby、decrby
截取字符串:
替换,从索引出开始替换:
setex,setn,后面都是value:
mset和mget:
user1对象:
直接set和mset的user1各是各,两者不同
getset:
list:
最左边索引是0,lpush是从左边放进去,;lrange是取索引从0到-1(全部)
rpush:从右边放
lpop和rpop:
lindex:
llen list:返回长度
lrem list 2 one:移除list中的2个value=one的元素
ltrim mylist 1 2 :只要mylist中的索引为1,2的元素
lset:
linsert:
Set
scard:
srem:
srandmember:
spop:
smove:
差集、交集、并集:
HASH:
一个key对应一个map集合,集合里面有多个<key,value> ,相当于对象名:属性,属性值.....,hset 也可以多个k,v
hdel:
hlen:
得到集合的大小
hexists:
hkeys和hvals:
hincrby:
hsetnx:
hash更合适操作对象
Zset,给value赋一个隐形的score,zrange是升序排列:
排序,zrangebyscore也是升序:
移除zrem:
倒序:
zcount:
zcard:
3种特殊数据类型:
Geospatial地理位置
getadd添加经纬度:
getpos:
geodist:
georadius:
Hyperloglog基数统计不同元素的个数
bitmap,最后的的value只能取0/1: