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:




浙公网安备 33010602011771号