redis入门第二篇-------redis五种数据类型及常使用命令

redis入门第二篇-------redis五种数据类型及常使用命令

redis是键值对<key,value>形式的数据库,因此redis的命令都是对键值对进行操作的。
其中value为redis支持五种数据类型:String、list、set、zset、hash。

对String类型进行操作

其中String是最redis中最基本的数据类型,String表示的不只是字符串,还可以是数值类型,jpg格式或序列化的对象。而其它四种类型相当于Java中的集合,最终存储的数据还是String类型
常见的命令有:

set key val						// 新建(或修改)一个键值对

get key							// 获取key对应的val

del key							// 删除key对应的键值对

keys * 							// 获取存在的所有的key

exists key						// 若key存在返回1,不存在则返回0

type key						// 获取key对应val的数据类型

expire key	time(s)				// 设置键值对的存活时间,以秒为单位.(设置手机验证码时可以用上)

ttl key							// 获取键值对剩余的有效期,-2表示永不过期,-1表示已经过期

setnx key val					// 若key不存在则添加,存在则不进行操作,nx表示not exists

mset, mget, msetnx						// 同set和get,m表示more,一个可以添加多个键值对或获取多个值

incr/decr key					// 将key对应的值进行加一减一操作,值需为整数,否则会报错

incrby/decrby key num			// 将key对应的值进行加上或减去num操作,值需为整数,否则会报错

getset key val				    // 将key对应的值改为val,同时返回原来的值 

setex key time val				// ex为expire,设置键值对的时候同时指定有效时间

flushdb							// redis有16个库,默认使用0号库(通常也只使用0号库),该命令表示清空当前库

flushall						// 清空所有的库

命令看起来还是挺多的,但大多时候我们都可以顾名思义,记得有哪个功能,等用的时候再去查找,多用几遍也都可以记住了。

我们来动手试一遍
首先运行

redis-server &
redis-cli

进入连接redis服务的客户端。
在这里插入图片描述
在这里插入图片描述

list类型的操作

list形如Java中的Arraylist,元素可重复,有序,通过range索引值。但查看源码可知redis中的list底层是个双向链表

lpush/rpush key val1 val2			// 在链表左边/右边插入元素

lpop/rpop key						// 在链表左边/右边弹出一个元素

rpoplpush key1	key2				// key1右边弹出一个元素插入key2左边

lrange key start end				// 索引范围的值, start和end都包含

lindex key index					// 获取给定索引的值

llen key							// 获取列表长度

linsert key before/after val newval	// 在val之前/后插入一个新的元素

lrem key n val						// 删除n个值为val的元素

在这里我们可以发现,除了前面几个l和r对应表示left和right,其他命令前都要加上l表示对list进行操作。redis就是这样,包括后面的set操作加s,hash操作加h,除了最基本的String类型。
在这里插入图片描述

对set集合进行操作

redis中的set也形似Java中的set,元素不可重复,无序。底层是value为空的hash表。因此是无序的,因此不能根据索引获取元素

sadd key val1 vla2				// 为set集合添加元素

smembers key					// 获取set的所有元素

sismember key val				// 返回是否存在val元素

scard key						// set集合元素个数

srem key val					// 删除元素

spop key						// 随机删除一个元素

srandmember key n				// 随机取n个元素(不删除)

sinter	key1 key2				// 获得两个set集合的交集

sunion key1 key2				// 获得两个set集合的并集

sdiff key1 key2					// key1-key2的结果集(key1-key2和key2-key1结果不一样)

在这里插入图片描述
在这里插入图片描述

对hash集合进行操作

hash也类似于Java中的HashMap<String, String>,是一个String类型的键值对,键不能重复。为了区分,在这里我们将hash的键称为field,值为val。

hmset/hset key field val		// 添加值

hexists key field				// 判断hash表是否存在键为filed的键值对

hkeys key						// 获取hash表的所有field

hvals key						// 获取hash表的所有值

hincrby key field num			// 对为整数的值进行加操作

hsetnx key field val			// 不存在field时添加

hgetall key						// 获取hash表所有的键值对

在这里插入图片描述

对zset集合进行操作

zset 元素唯一不可重复,每个元素都关联了一个score,元素按score值进行排序,因此更类似于hash和list,可以通过索引定位元素。

zadd key score val						// 为zset添加元素,指定分数

zrange key start end					// 通过索引定位元素

zrangebyscore key min max				// 通过分数排序显示符合分数范围的元素

zrank key val							// 返回元素的排名

zcount key min max						// 统计分数在min和max之间的元素个数

zincrby key score val					// 修改元素的分数

zrem key val							// 删除元素

在这里插入图片描述

数据类型太多,看起来有点混乱?其实大多时候我们都能根据名字获悉命令的功能,如hmset 可知是hash表添加多个(more)元素。把命令自己试一遍也可以理解地更深刻!

展开阅读全文

Redis 服务器管理(集群主从复制及高可用)

08-30
Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。 Redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。 Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。     本课程主要讲解以下内容: 1. Redis的基本使用 2. Redis数据库的数据类型 3. Redis数据库数据管理 4. Redis的主从复制 5. Redis数据库的持久性 6. Redis的高可靠性和集群 7. Redis的优化和性能测试 8. Redis服务器的维护和管理 9. Redis服务器的见问题排错  
©️2020 CSDN 皮肤主题: 游动-白 设计师: 上身试试 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值