Redis--3.入门(基础命令和基本类型)

Redis是一个开源( BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件MQ。它支持多种类型的数据结构,如字符串( strings),散列( hashes),列表(lists),集合(sets),有序集合( sorted sets)与范围查询,bitmaps,hyperloglogs 和地理空间( geospatial )索引半径查询。Redis 内置了复制( replication) , LUA脚本( Lua scripting ),LRU驱动事件( LRU eviction) , 事务(transactions )和不同级别的磁盘持久化( persistence ),并通过Redis哨兵( Sentinel )和自动分区(Cluster )提供高可用性( high availability)。

1.基础知识

1)最基本的常用命令

redis默认配置了16个数据库,默认使用第0个.

可以使用select 命令切换 到其他数据库, 不用的库可以存不同的值

dbsize查看当前库的大小:

set 和get 设置和获取一个key 的value

msetmget:批量设置处理k-v对,如 

mset  k1 v1 k2 v2 k3 v2  #批量设置看k1,k2,k3
mget k1,k2,k3   #批量获取v1,v2,v3

 keys *  查看当前库所有key: 

flushdb  清空当前库


flushall   清空全部库 

exist  查看某个key是否存在(1是存在,0是不存在)

使用move  命令将当前库的某个key移动到其他库:

 使用expire 命令设置某个key的过期时间,使用ttl  命令查看key的有效期

 使用del  命令删除一个key

 使用type  查看key的类型

更多命令可以看redis中国官网:Redis命令中心(Redis commands) -- Redis中国用户组(CRUG)

2)Redis是单线程的(6.0之后才使用多线程)
Redis是很快的,官方表示, Redis是基于内存操作, CPU不是Redis性能瓶颈, Redis的瓶颈是根据机器的内存和网络带宽,所以既然可以使用单线程来实现,那就使用单线程了。

3)Redis为什么很快

首先多线程的服务器并不一定比单线程的服务器快,因为在多线程服务器中cpu要进行线程间的切换,即会进行上下文切换,会消耗很多时间,而单线程的服务器不用,其次cpu的速度>>内存>>硬盘,而redis是基于内存的,再加上使用单线程,所以非常快。

2.Redis常用五大数据类型

1)String

对string的操作,

append:追加到原string末尾,如果远string不存在,则新建一个string类型的key

 strlen:返回指定key的string长度

 

incr、decr、incrby、decrby : 自增自减操作

 

 getrange:截取字符串

setrange:字符串替换

setex:也可以设置key的有效时长

setnx:当指定的key不存在时就设置这个key的值,与setex常常一起使用

 前面讲了批量的mset和mget,这里讲一下msetnx(这个是原子性的,只能一起成功和失败):

getset 命令:先get再set

2)list

在redis里面,我们可以把list玩成, 栈、队列、阻塞队列。所有的list命令都是用L开头的!

LPUSH  :向list的头部插入一个key,返回push之后的list大小


LRANGE :按顺序获取指定位置的值

 RPUSH  :向list的尾部插入一个key,返回push之后的list大小

LPOP:从list头部取出一个key

RPOP :从list尾部去除一个key

LINDEX:获取指定key的指定下标的值 

 LLEN:返回list的长度(大小)

 LREM:移除指定的值

 LTRIM:通过下标截取到指定长度的list 

RPOPLPUSH:移除列表尾的元素并插入到另一个列表头(RPOP和LPUSH的组合)

 LSET:将list的指定下标处的值替换为另一个值(更新操作),前提是这个list存在且下标未越界

LINSERT: 指定的值前或后插入值

list类型:实际上是一个链表, before Node after,left , right 都可以插入值:
如果key不存在,创建新的链表
如果key存在,新增内容
如果移除了所有值,空链表,也代表不存在! .
在两边插入或者改动值,效率最高!中间元素,相对来说效率会低一点~

3)set    指令以s开头,set中不能重复值

SADD:在set中添加元素

SMEMBERS:查看所有元素

SISMEMBER:查看某个值是否存在于某个set中

SCARD:获取set集合中的元素个数

 

SREM:移除set集合中的某个值

 SPOP:随机移除set集合中元素 

SMOVE 将源集合的某个值移到另一个目的集合

SDIFFSINTERSUNION:集合处理 

4)hash(哈希)key-map模型,其中map是key-value模型,命令以h开头

HSET:设置key的hash值,可以进行批量操作(批量操作在v4.0之前使用的是HMSET)

HGET:获取key的hash值

HGETALL:获取指定key的全部hash值,map中的key-value形式出现

HMGET:批量获取值

HDEL删除指定key的hash值,可以批量操作

HLEN:获取指定key的哈希值数量

 HEXISTS:判断指定key的hash中是否存在指定的字段

HKEYS:获取指定key的所有hash的key值,注意hash是:key-map型(map中是key-value型)

HVALS:获取指定key的所有hash的key->value值

HINCRBYHDECRBYHSETNX等操作和前面类似的

hash变更的数据user name age,尤其是是用户信息之类的,经常变动的信息! hash 更适合于对象的存储, String更加适合字符串存储!

5)zset  有序集合

ZSET k1 score1 v1... (可以批量操作)添加到k1的ZSET集合

ZRANGE key start stop 查看某些值(升序)

ZREVRANGE key start stop :返回从start到stop的按score降序结果

ZRANGEBYSCORE key min max [withscore]:按照key中的值从min到max升序排列返回,可以带上score值

 

ZREM key value 移除key中值为value的元素

ZCARD  key :获取key的所有元素个数

 ZCOUNT :获取指定区间的元素数量

 其余的api可以看官方文档:Redis命令中心(Redis commands) -- Redis中国用户组(CRUG)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值