简单易懂学编程:Redis的五种数据类型和操作,以及一些其他操作
我们已经学了很多的东西,今天我们来研究一下Redis是什么?它能做什么,以及它的五种类型是什么样的,以及它们的具体的使用场景。开发工具:IDLE (Python 3.7 64-bit或者32-bit) , pycharm(professional的版本), Ubuntu,xshell6(注:不需要3.7版本的也行,只需要Python3的版本都可以)1.什么是Redis
Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:Remote Dictionary Server,该软件使用C语言编写,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。
优势:Redis以内存作为数据存储介质,所以读写数据的效率极高,远远超过数据库。
适用的环境:
由于Redis在交换数据的优势,所以在服务器中常用来存储一些需要频繁调取的数据,这样可以大大使得系统直接读取磁盘来获得数据的I/O慢的情况得到改善,更重要的是极大的提升访问的速度。将这种热点数据存到Redis(内存)中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。
未安装Redis的,可以在虚拟机中sudo apt-get update或者sudo apt-get install redis-server进行安装。
Redis的五种数据类型:字符串(string)、列表(list)、哈希(hash)、集合(set)、有序集合(sorted sets)。键(key)有5中数据类型:string、list、set、zset(sorted set)、hash。值(value) :都是字符串类型的。
注意:键(key)是唯一的,不能设置一个相同的键(key) 不然现在设置的键(key)就会覆盖之前的那么键(key)。
查看过期时间(-1 表示永久 ; -2 表示 不存在)
为什么会有时间限制呢?行为的Redis是内存级的数据库,在内存中运行速度快,缺点就是容量小。一般操作Redis的时候我们不会直接使得Redis直接存在,我们会设置一个过期时间使得不让键一直占用内存容量。
给已经存在 key,设置过期时间,即使再使用get name它也只会返回一个空(nil)。
设置 键(key)的同时,设置过期时间。
注意:尽量不要写中文,因为中文会导致乱码,或者显示的时候以二进制显示。
给已有的value,再添加新的值。append key value,redis 里面所有的 value,都是字符串类型的。
键(key)的操作。
del key:删除一个键(key)。
exists key:查看key是否存在 ,存在返回 1, 不存在返回 0。
type key:查看键(key)的类型。
2.list
lpush:左添加(栈)。rpush:右添加 (队列)。
我们查看lrange my_list 0 -1的时候,输出的顺序就是 d c b a,用rpop my_list 是删除的右边第一个即是:a.
我们查看lrange my_rlist 0 -1的时候,输出的顺序就是 a b c d,用rpop my_list 是删除的左边第一个即是:a.
lrem test_list 2 a : count > 0 从左往右 删除数量为count的value。从上往下删除。
lrem test_list 0 a : count = 0 删除所有的 value。当等于0 的时候将删除表内所有的指定值。
lrem test_list -1 b : count < 0 从右往左 删除数量为count的value。当小于0的时候从下往上删除。3.hash(类似于字典)
user { name:jianeng} user相当于键(key),{ name:jianeng}相当于值(value)。
hset user name dayekeji :定义一个hash。hget user name : 获取值。
设置多个:user{name:dayekeji , age:25, sex:male }。
4.集合(set):sadd key value [value] 唯一性,无序性。
删除srem 指定删除:srem key member。spop随机删除 :spop key。随机选择一个移除。
移动一个集合的值到另一个集合,smove my_set my_set2 z,将my_set中的z移动到my_set2中去。
并集
差集
scard my_set :获取集合个数。
srandmember my_set : 随机返回一个。
5.zset(有序集合)
zadd my_zset 1 'one' : 可以添加删去的值。
都只能在正向索引范围内进行,反向索引不可以。dedis:定阅(subscribe)和发布(pubulish)。
接收到一个message是由dayekeji发出的,内容是hello world。进入redis中以后,想要退出输入quit就可以退出了。
好了今天就和大家分享到这吧!今天 的内容偏向于操作,都不是很难,redis最常用的操作基本小编都已经给大家示范了一遍。大家要记得自己多练习一下,大家加油!