radis数据库的简单的使用

  1. 常用命令

就DB来说,Redis成绩已经很惊人了,且不说memcachedb和tokyocabinet之流,就说原版的memcached,速度似乎也只能达到这个级别。Redis根本是使用内存存储,持久化的关键是这三条指令:SAVE BGSAVE LASTSAVE …

常见可执行文件:

redis-benchmark  Redis性能测试工具

redis-check-aof  检查aof日志工具

redis-check-rdb  检查rdb日志工具

redis-cli  连接用的客户端

redis-sentinel  Redis集群的管理工具 监控多个master-slave集群,发现master宕机后能进行自动切换

redis-server  Redis服务程序

 

连接操作相关的命令

  • quit:关闭连接(connection)
  • auth:简单密码认证
  • ping 测定连接是否存活


持久化

  • save:将数据同步保存到磁盘
  • bgsave:将数据异步保存到磁盘
  • lastsave:返回上次成功将数据保存到磁盘的Unix时戳
  • shundown:将数据同步保存到磁盘,然后关闭服务save保存,nosave 关闭不保存


远程服务控制

  • info:提供服务器的信息和统计
  • monitor:实时转储收到的请求,另外一个客户端监控
  • slaveof:改变复制策略设置,更改host port为slave
  • time:显示服务器时间,时间戳(秒),微秒数
  • bgrewriteaof:后台保存rdb快照
  • config:在运行时配置Redis服务器
  • config get 配置项:获取服务器配置的信息
  • config get "requirepass"
  • config set 配置项  值:设置配置项信息


对value操作的命令

  • exists(key):确认一个key是否存在
  • del(key):删除一个key
  • type(key):返回值的类型
  • keys (pattern):返回满足给定pattern的所有key
  • randomkey:随机返回key空间的一个
  • rename(oldname, newname):重命名key(有些版本是keyrename)
  • dbsize:返回当前数据库中key的数目
  • expire:设定一个key的活动时间(s)
  • ttl:获得一个key的活动时间
  • select(index):按索引查询
  • move(key, dbindex):移动当前数据库中的key到dbindex数据库
  • flushdb:删除当前选择数据库中的所有key
  • flushall:删除所有数据库中的所有key


对String操作的命令

  • strlen k1 字符串长度
  • set(key, value):给数据库中名称为key的string赋予值value
  • get(key):返回数据库中名称为key的string的value
  • getset(key, value):给名称为key的string赋予上一次的value,没有key则创建
  • mget(key1, key2,…, key N):返回库中多个string的value
  • setnx(key, value):添加string,名称为key,值为value 已存在不会覆盖
  • setex(key, time, value):向库中添加string,设定过期时间time
  • mset(key N, value N):批量设置多个string的值
  • msetnx(key N, value N):如果所有名称为key i的string都不存在
  • incr(key):名称为key的string增1操作
  • incrby(key, integer):名称为key的string增加integer类型的值
  • decr(key):名称为key的string减1操作
  • decrby(key, integer):名称为key的string减少integer
  • append(key, value):名称为key的string的值附加value
  • substr(key, start, end):返回名称为key的string的value的子串-1代表最后个
  • setrange age 位置 新增字符串 从指定位置替换成指定字符串


对List操作的命令

  • rpush(key, value):在名称为key的list尾添加一个值为value的元素
  • lpush(key, value):在名称为key的list头添加一个值为value的 元素
  • llen(key):返回名称为key的list的长度
  • lrange(key, start, end):返回名称为key的list中start至end之间的元素
  • ltrim(key, start, end):截取名称为key的list
  • lindex(key, index):返回名称为key的list中index位置的元素
  • lset(key, index, value):给名称为key的list中index位置的元素赋值
  • lrem(key, count, value):删除count个key的list中值为value的元素 2 123 删除两个123
  • lpop(key):返回并删除名称为key的list中的首元素
  • rpop(key):返回并删除名称为key的list中的尾元素
  • blpop(key1, key2,… key N, timeout):lpop命令的block版本。
  • brpop(key1, key2,… key N, timeout):rpop的block版本。
  • rpoplpush(srckey, dstkey):返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部

链表结构的应用场景
      针对链表结构的ValueRedis在其官方文档中给出了一些实用技巧,如RPOPLPUSH命令,下面给出具体的解释。
      Redis链表经常会被用于消息队列的服务,以完成多程序之间的消息交换。假设一个应用程序正在执行LPUSH操作向链表中添加新的元素,我们通常将这样的程序称之为"生产者(Producer)",而另外一个应用程序正在执行RPOP操作从链表中取出元素,我们称这样的程序为"消费者(Consumer)"。如果此时,消费者程序在取出消息元素后立刻崩溃,由于该消息已经被取出且没有被正常处理,那么我们就可以认为该消息已经丢失,由此可能会导致业务数据丢失,或业务状态的不一致等现象的发生。然而通过使用RPOPLPUSH命令,消费者程序在从主消息队列中取出消息之后再将其插入到备份队列中,直到消费者程序完成正常的处理逻辑后再将该消息从备份队列中删除。同时我们还可以提供一个守护进程,当发现备份队列中的消息过期时,可以重新将其再放回到主消息队列中,以便其它的消费者程序继续处理。(使用备份队列暂时存储准备消费的信息)


对Set操作的命令

  • sadd(key, member):向名称为key的set中添加元素member
  • srem(key, member) :删除名称为key的set中的元素member
  • spop(key) :随机返回并删除名称为key的set中一个元素
  • smove(srckey, dstkey, member) :移到集合元素
  • scard(key) :返回名称为key的set的基数
  • sismember(key, member) :member是否是名称为key的set的元素
  • sinter(key1, key2,…key N) :求交集
  • sinterstore(dstkey, (keys)) :求交集并将交集保存到dstkey的集合
  • sunion(key1, (keys)) :求并集
  • sunionstore(dstkey, (keys)) :求并集并将并集保存到dstkey的集合
  • sdiff(key1, (keys)) :求差集
  • sdiffstore(dstkey, (keys)) :求差集并将差集保存到dstkey的集合
  • smembers(key) :返回名称为key的set的所有元素
  • srandmember(key) :随机返回名称为key的set的一个元素

set应用范围:
      1). 可以使用RedisSet数据类型跟踪一些唯一性数据,比如访问某一博客的唯一IP地址信息。对于此场景,我们仅需在每次访问该博客时将访问者的IP存入Redis中,Set数据类型会自动保证IP地址的唯一性。
      2). 充分利用Set类型的服务端聚合操作方便、高效的特性,可以用于维护数据对象之间的关联关系。比如所有购买某一电子设备的客户ID被存储在一个指定的Set中,而购买另外一种电子产品的客户ID被存储在另外一个Set中,如果此时我们想获取有哪些客户同时购买了这两种商品时,Setintersections命令就可以充分发挥它的方便和效率的优势了。


对Hash操作的命令

  • hset(key, field, value):向名称为key的hash中添加元素field
  • hget(key, field):返回名称为key的hash中field对应的value
  • hmget(key, (fields)):返回名称为key的hash中field i对应的value
  • hmset(key, (fields)):向名称为key的hash中添加元素field 
  • hincrby(key, field, integer):将名称为key的hash中field的value增加integer
  • hexists(key, field):名称为key的hash中是否存在键为field的域
  • hdel(key, field):删除名称为key的hash中键为field的域
  • hlen(key):返回名称为key的hash中元素个数
  • hkeys(key):返回名称为key的hash中所有键
  • hvals(key):返回名称为key的hash中所有键对应的value
  • hgetall(key):返回名称为key的hash中所有的键(field)及其对应的value

 

sortset操作的命令

  • zadd key score1 value1:添加元素
  • zrange key start stop [withscore]:把集合排序后,返回名次[start,stop]的元素默认是升续排列  withscores 是把score也打印出来
  • zrank key member:查询member的排名(升序0名开始)
  • zrangebyscore key min max [withscores] limit offset N:集合(升序)排序后取score在[min, max]内的元素,并跳过offset个,取出N个 
  • zrevrank key member:查询member排名(降序 0名开始)
  • zremrangebyscore key min max:按照score来删除元素,删除score在[min, max]之间
  • zrem key value1 value2:删除集合中的元素
  • zremrangebyrank key start end:按排名删除元素,删除名次在[start, end]之间的
  • zcard key:返回集合元素的个数
  • zcount key min max:返回[min, max]区间内元素数量
  • zinterstore dest numkeys key1[key2..] [WEIGHTS weight1 [weight2...]] [AGGREGATE SUM|MIN|MAX]
  •       求key1,key2的交集,key1,key2的权值分别是weight1,weight2
  •       聚合方法用 sum|min|max
  •   聚合结果 保存子dest集合内
  •       注意:weights,aggregate如何理解?
  •       答:如果有交集,交集元素又有score,score怎么处理?aggregate num->score相加,min最小score,max最大score,另外可以通过weights设置不同的key的权重,交集时  score*weight

    
sortset应用范围:
    1). 可以用于一个大型在线游戏的积分排行榜。每当玩家的分数发生变化时,可以执行ZADD命令更新玩家的分数,此后再通过ZRANGE命令获取积分TOP TEN的用户信息。当然我们也可以利用ZRANK命令通过username来获取玩家的排行信息。最后我们将组合使用ZRANGEZRANK命令快速的获取和某个玩家积分相近的其他用户的信息。
    2). Sorted-Sets类型还可用于构建索引数据。

 

 

 

 

redis:

 

关系型数据库:mysql、oracle、sqlserver、db2、微软sql等。

非关系型数据库:redis、memorycache、hbase、mongodb等。

 

 

redis是一个什么东西?

redis是一个开源内存数据库。

Redis is an open source (BSD licensed),

in-memory data structure store,

used as a database, cache and message broker

 

redis数据始终是key-value类型

 

为啥用redis?

1、存储数据(热数据)

2、可以缓存

3、redis容易使用

4、redis提供丰富的数据类型

5、redis可以主重

6、redis的分布式、高可用

7、redis是内存存储

7、redis支持持久化

8、redis用于消息队列

9、redis可以统计

10、redis可以进行排名

 

 

redis的五种数据类型:

strings:

hashes:

lists:

sets:

sorted sets:

 

 

 

redis的几个版本?

3.0

4.0

5.0.3

 

 

redis的安装:

源码编译安装:

./configure MakeFile

make

make install

 

 

解压:

tar -zxvf /root/redis-4.0.11.tar.gz -C /usr/local/

在根目录下执行编译:

make

make install

 

已经安装好:

 

mkdir /etc/redis

cp ./redis.conf /etc/redis/6379.conf  启动连接、cli连接不指定配置文件,系统会默认加载该配置文件

 

配置redis的配置:

requirepass root   #配置密码

 

 

启停:

./src/redis-server ./redis.conf

 

 

 

redis的主重配置:

master:192.168.216.111

slave:192.168.216.112

 

读写分离;

slave-read-only yes 默认slave只能读

主重模式下,redis主能写,重不能写,只能读

 

 

主从配置:

从服务器配置

slaveof 192.168.216.111 6379

masterauth root

 

从服务器需要重新设置绑定:

bind 127.0.0.1 192.168.216.112

 

保证启动从服务器的时候master安装目录下的dump.rdb文件被删除。

rm -rf ./dump.rdb

 

redis的HA的搭建:???

 

 

redis的操作命令:

ping

auth

quit

shutdown 关闭服务

 

save

bgsave

lastsave

 

info :

time

config get/set

 

 

exists key

select index 切换库

keys * 过滤所有key keys s*

dbsize 所有的key的数量

rename key newkey

move key index

del key

expire key time

ttl key

type key 数据类型

randomkey 随机返回key

 

****flushdb 删除该看的所有数据

****flushall 删除所有库的所有数据

 

默认redis中的库是16个

 

string的常见操作:

set key value

get key

strlen key

mset k v k v ...

mget k k...

setex k time v

setnx k v  k 不存在才set,不会覆盖已经存在key的值

msetnx k v k v

incr key 递增1

incrby key v 和v相加

decr key 递减1

decrby key v 和v减

 

list常见命令:

rpush key v v

lpush key v v

lrange key start end

ltrim key start end 保留start end之间的值

lindex key index 去index下标的值

llen key 取长度

lset key index value 修改指定index的值

lrem key count value 删除count个value

lpop key

rpop

blpop key key1 key2 timeout

brpop key key1 key2 timeout

rpoplpush key key1 将key的最后一个元素取出并删除并添加到key1中的最左边

 

 

set的常见操作:

sadd k v v v

smembers k

srem k member  删除指定的成员

spop k count 随机返回k中count个元素

smove s1 s2 member 从s1中把member移到s2

scard s2 统计s2中的个数

sismember k member 元素是否存在

srandmemeber k count 随机从k中获取count个元素

 

sinter s1 s2

sinterstore des s1 s2 将s1和s2交集存储到des

sdiff s1 s2

sdiffstore des s1 s2

sunion s1 s2

sunionstore des s1 s2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值