日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

Redis入门到精通-Redis数据类型

發(fā)布時(shí)間:2023/12/19 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis入门到精通-Redis数据类型 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

登錄Redis數(shù)據(jù)庫(kù)

[root@localhost bin]# /usr/local/redis/bin/redis-cli

String類型

? String 數(shù)據(jù)結(jié)構(gòu)是簡(jiǎn)單的key-value類型,value其實(shí)不僅是String,也可以是數(shù)字,是包含很多種類型的特殊類型,并且是二進(jìn)制安全的。比如序列化的對(duì)象進(jìn)行存儲(chǔ),比如一張圖片進(jìn)行二進(jìn)制存儲(chǔ),比如一個(gè)簡(jiǎn)單的字符串,數(shù)值等等。

常用命令

? 設(shè)值:set name zhangsan (說明:多次設(shè)置name會(huì)覆蓋)

? setnx name lisi: (not exist) 如果name不存在,則設(shè)值。如果name存在,則不設(shè)值并返回0;

? setex name 10 lisi :(expired) 設(shè)置name的值為lisi,過期時(shí)間為10秒,10秒后name清除(key也清除)

? setrange string range value 替換字符串

? 例如:>set address abcdefg

? >setrange address 2 yy 后address的值為abyyefg (從第3個(gè)字符開始替換為yy,后面的由原來

? 的字符補(bǔ)齊)。

? 取值: get name

? 刪值:del name

批量寫:mset k1 v1 k2 v2 ...

? 批量讀:mget k1 k2 k3

? 一次性設(shè)值和讀取(返回舊值,寫上新值):getset name lily

? 數(shù)值類型自增減:incrdecrincrbydecrby

127.0.0.1:6379> set a 1 OK 127.0.0.1:6379> incr a (integer) 2 127.0.0.1:6379> incr a (integer) 3 127.0.0.1:6379> get a "3" 127.0.0.1:6379> desc a (error) ERR unknown command 'desc' 127.0.0.1:6379> decr a (integer) 2 127.0.0.1:6379> get a "2" 127.0.0.1:6379> incrby a 4 (integer) 6 127.0.0.1:6379> incrby a 2 (integer) 8 127.0.0.1:6379> decrby a 4 (integer) 4

? 字符串拼接:append name abc :在name=lisi原有基礎(chǔ)上拼接為 lisiabc

? 字符串長(zhǎng)度:strlen name :返回name的字符長(zhǎng)度

Hash類型

? Hash類型是String類型的field和value的映射表,或者說是一個(gè)String集合。它特別適合存儲(chǔ)對(duì)象,相比較而言,將一個(gè)對(duì)象類型存儲(chǔ)在Hash類型要存儲(chǔ)在String類型里占用更少的內(nèi)存空間,并方整個(gè)對(duì)象的存取。

常用命令

? 設(shè)值:hset hashname field value(hset是設(shè)值命令,hashname是集合名字,field是字段名,value是值)

? 例子:>hset user1 name zhangsan

? >hset user1 age 23

? 取值:hget hashname field

? 批量設(shè)置:hmset hashname field1 value1 field2 value2 ….

? 例子:>hmset user2 name lisi age 22

? 批量取值:hmget hashname field1 field2 ...

? hsetnx:和setnx大同小異

? 集合遞增和遞減:hincrby和hdecrby

127.0.0.1:6379> hgetall user1 1) "age" 2) "23" 3) "name" 4) "zhangsan" 127.0.0.1:6379> hincrby user1 age 2 (integer) 25 127.0.0.1:6379> hgetall user1 1) "age" 2) "25" 3) "name" 4) "zhangsan"

? hexists:是否存在key,如果存在返回,不存在返回0

127.0.0.1:6379> hexists user1 age (integer) 1 127.0.0.1:6379> hexists user1 sex (integer) 0

? 刪除:hdel 刪除指定的hash的field

127.0.0.1:6379> hdel user1 name (integer) 1 127.0.0.1:6379> hgetall user1 1) "age" 2) "23"

? hlen:返回hash集合里的所有的鍵數(shù)值(size)

127.0.0.1:6379> hlen user1 (integer) 2

? hkeys 返回hash里所有的字段

127.0.0.1:6379> hkeys user1 1) "name" 2) "age"

? hvals返回hash的所有value

127.0.0.1:6379> hvals user1 1) "zhangsan" 2) "23"

? hgetall返回hash里所有的key和value

127.0.0.1:6379> hgetall user1 1) "name" 2) "zhangsan" 3) "age" 4) "23"

List類型

? List類型是一個(gè)鏈表結(jié)構(gòu)的集合,其主要功能有push、pop、獲取元素等。更詳細(xì)的說,List類型是一個(gè)雙端鏈表的節(jié)后,我們可以通過相關(guān)的操作進(jìn)行集合的頭部或者尾部添加和刪除元素,List的設(shè)計(jì)非常簡(jiǎn)單精巧,即可以作為棧,又可以作為隊(duì)列,滿足絕大多數(shù)的需求。

常用命令

? lpush:從頭部加入元素(棧,先進(jìn)后出)

127.0.0.1:6379> lpush list1 hello (integer) 1 127.0.0.1:6379> lpush list1 world (integer) 2 127.0.0.1:6379> lrange list1 0 -1 1) "world" 2) "hello"

? rpush:從尾部加入元素(隊(duì)列,先進(jìn)先出)

127.0.0.1:6379> rpush list1 java (integer) 3 127.0.0.1:6379> lrange list1 0 -1 1) "world" 2) "hello" 3) "java"

? linsert:插入元素

127.0.0.1:6379> linsert list1 before hello php (integer) 4 127.0.0.1:6379> lrange list1 0 -1 1) "world" 2) "php" 3) "hello" 4) "java" 127.0.0.1:6379> linsert list1 after hello php (integer) 5 127.0.0.1:6379> lrange list1 0 -1 1) "world" 2) "php" 3) "hello" 4) "php" 5) "java"

? lset:將制定下表的元素替換掉

127.0.0.1:6379> lset list1 0 k OK 127.0.0.1:6379> lrange list1 0 -1 1) "k" 2) "php" 3) "hello" 4) "php" 5) "java"

? lrem:刪除元素,移除n個(gè),返回刪除的個(gè)數(shù)n

127.0.0.1:6379> lrem list1 1 php (integer) 1 127.0.0.1:6379> lrange list1 0 -1 1) "k" 2) "hello" 3) "php" 4) "java" 127.0.0.1:6379> lrem list1 1 php (integer) 1 127.0.0.1:6379> lrange list1 0 -1 1) "k" 2) "hello" 3) "java"

? ltrim:保留制定key的值范圍內(nèi)的數(shù)據(jù)

127.0.0.1:6379> rpush list2 1 (integer) 1 127.0.0.1:6379> rpush list2 2 (integer) 2 127.0.0.1:6379> rpush list2 3 (integer) 3 127.0.0.1:6379> rpush list2 4 (integer) 4 127.0.0.1:6379> lrange list2 0 -1 1) "1" 2) "2" 3) "3" 4) "4" 127.0.0.1:6379> ltrim list2 2 -1 OK 127.0.0.1:6379> lrange list2 0 -1 1) "3" 2) "4"

? lpop:從list的頭部刪除元素,并返回刪除元素。

127.0.0.1:6379> rpush list3 a (integer) 1 127.0.0.1:6379> rpush list3 b (integer) 2 127.0.0.1:6379> rpush list3 c (integer) 3 127.0.0.1:6379> rpush list3 d (integer) 4 127.0.0.1:6379> lrange list3 0 -1 1) "a" 2) "b" 3) "c" 4) "d" 127.0.0.1:6379> lpop list3 "a" 127.0.0.1:6379> lrange list3 0 -1 1) "b" 2) "c" 3) "d"

? rpop:從list的尾部刪除元素,并返回刪除元素

127.0.0.1:6379> rpop list3 "d" 127.0.0.1:6379> lrange list3 0 -1 1) "b" 2) "c"

? 可以基于List實(shí)現(xiàn)MQ。

? rpoplpush list1 list2:從list1尾部刪除元素,并將被移除的元素添加到list的頭部,返回被移除的元素。

127.0.0.1:6379> lrange list2 0 -1 1) "3" 2) "4" 127.0.0.1:6379> rpoplpush list2 list4 "4" 127.0.0.1:6379> lrange list2 0 -1 1) "3" 127.0.0.1:6379> lrange list4 0 -1 1) "4" 127.0.0.1:6379> rpoplpush list2 list4 "3" 127.0.0.1:6379> lrange list2 0 -1 (empty list or set) 127.0.0.1:6379> lrange list4 0 -1 1) "3" 2) "4"

? llen:返回元素個(gè)數(shù)

127.0.0.1:6379> llen list1 (integer) 3 127.0.0.1:6379> llen list3 (integer) 2

? lindex:返回名稱為key的list中index位置的元素

127.0.0.1:6379> lrange list3 0 -1 1) "b" 2) "c" 127.0.0.1:6379> lindex list3 0 "b" 127.0.0.1:6379> lindex list3 1 "c" 127.0.0.1:6379> lindex list3 2 (nil)

Set類型

? set集合是string類型的無序集合,set是通過hashtable實(shí)現(xiàn)的,對(duì)集合我們可以取交集、并集、差集。

常用命令

? sadd:向名稱為key的set中添加元素,set集合不允許重復(fù)元素。

? smembers:查看set集合中的元素。

127.0.0.1:6379> sadd set1 a (integer) 1 127.0.0.1:6379> sadd set1 b (integer) 1 127.0.0.1:6379> sadd set1 a (integer) 0 127.0.0.1:6379> smembers set1 1) "a" 2) "b"

? srem:刪除set集合的元素

127.0.0.1:6379> srem set1 a (integer) 1 127.0.0.1:6379> smembers set1 1) "b"

? spop:隨機(jī)返回刪除的key

127.0.0.1:6379> sadd set1 a (integer) 1 127.0.0.1:6379> sadd set1 c (integer) 1 127.0.0.1:6379> sadd set1 d (integer) 1 127.0.0.1:6379> smembers set1 1) "a" 2) "d" 3) "c" 4) "b" 127.0.0.1:6379> spop set1 "d" 127.0.0.1:6379>

? sdiff:返回兩個(gè)集合的不同元素(哪個(gè)集合在前面就以哪個(gè)集合為標(biāo)準(zhǔn))

127.0.0.1:6379> sadd set2 a (integer) 1 127.0.0.1:6379> sadd set2 b (integer) 1 127.0.0.1:6379> sadd set2 c (integer) 1 127.0.0.1:6379> sadd set3 a (integer) 1 127.0.0.1:6379> sadd set3 d (integer) 1 127.0.0.1:6379> sdiff set2 set3 1) "b" 2) "c" 127.0.0.1:6379> sdiff set3 set2 1) "d" 127.0.0.1:6379>

? sdiffstore:將返回的不同元素,存儲(chǔ)到另一個(gè)集合里

? sdiffstore set4 set2 set3 將set2 set3的比較結(jié)果保存到set4中

127.0.0.1:6379> sdiff set2 set3 1) "c" 2) "b" 127.0.0.1:6379> sdiffstore set4 set2 set3 (integer) 2 127.0.0.1:6379> smembers set4 1) "c" 2) "b" 127.0.0.1:6379>

? sinter:取交集

? sinterstore:取交集后保存

? sunion:取并集

? sunionstore:取并集后保存

127.0.0.1:6379> smembers set1 1) "a" 2) "b" 3) "c" 127.0.0.1:6379> smembers set3 1) "a" 2) "d" 127.0.0.1:6379> sinter set1 set3 1) "a" 127.0.0.1:6379> sunion set1 set3 1) "a" 2) "c" 3) "b" 4) "d" 127.0.0.1:6379> sinterstore set5 set1 set3 (integer) 1 127.0.0.1:6379> sunionstore set6 set1 set3 (integer) 4 127.0.0.1:6379> smembers set5 1) "a" 127.0.0.1:6379> smembers set6 1) "a" 2) "c" 3) "b" 4) "d"

? smove:從一個(gè)set集合移動(dòng)到另一個(gè)set集合里

? scard:查看集合里的元素個(gè)數(shù)

? sismember:判斷某個(gè)元素是否為集合中的元素,是,返回1。不是,返回0。

? srandmember:隨機(jī)返回一個(gè)元素

127.0.0.1:6379> smembers set2 1) "a" 2) "b" 3) "c" 127.0.0.1:6379> smembers set3 1) "a" 2) "d" 127.0.0.1:6379> smove set2 set3 c (integer) 1 127.0.0.1:6379> smembers set2 1) "a" 2) "b" 127.0.0.1:6379> smembers set3 1) "a" 2) "c" 3) "d" 127.0.0.1:6379> scard set2 (integer) 2 127.0.0.1:6379> scard set3 (integer) 3 127.0.0.1:6379> sismember set2 a (integer) 1 127.0.0.1:6379> sismember set2 c (integer) 0 127.0.0.1:6379> srandmember set2 "b" 127.0.0.1:6379> srandmember set2 "a" 127.0.0.1:6379> srandmember set2 "a"

Zset類型

? 有序集合和集合一樣也是string類型元素的集合,且不允許重復(fù)的成員。不同的是每個(gè)元素都會(huì)關(guān)聯(lián)一個(gè)double類型的分?jǐn)?shù)。redis正是通過分?jǐn)?shù)來為集合中的成員進(jìn)行從小到大的排序。

有序集合的成員是唯一的,但分?jǐn)?shù)(score)卻可以重復(fù)。

集合是通過哈希表實(shí)現(xiàn)的,所以添加,刪除,查找的復(fù)雜度都是O(1)。 集合中最大的成員數(shù)為 232 - 1 (4294967295, 每個(gè)集合可存儲(chǔ)40多億個(gè)成員)。

常用命令

? zadd:向有序集合中添加一個(gè)元素,該元素如果存在,則更新順序,如果分值相同元素不同,會(huì)同事存在兩個(gè)元素。

? zadd key score1 member1 score2 member2...

127.0.0.1:6379> zadd zset1 1 a 2 b 4 d 3 c (integer) 4 127.0.0.1:6379> zrange zset1 0 -1 1) "a" 2) "b" 3) "c" 4) "d" 127.0.0.1:6379> zrange zset1 0 -1 withscores 1) "a" 2) "1" 3) "b" 4) "2" 5) "c" 6) "3" 7) "d" 8) "4" 127.0.0.1:6379> zadd zset1 1.5 x //插入1.5分的 會(huì)根據(jù)分?jǐn)?shù)排序 (integer) 1 127.0.0.1:6379> zrange zset1 0 -1 withscores1) "a"2) "1"3) "x"4) "1.5"5) "b"6) "2"7) "c"8) "3"9) "d" 10) "4" 127.0.0.1:6379> zadd zset1 2 y //插入分值為2,但元素為新元素y (integer) 1 127.0.0.1:6379> zrange zset1 0 -1 withscores 1) "a"2) "1"3) "x"4) "1.5"5) "b" //兩個(gè)分值為2的b和y都會(huì)存在6) "2" 7) "y" 8) "2"9) "c" 10) "3" 11) "d" 12) "4" 127.0.0.1:6379> zadd zset1 5 b //重新插入重復(fù)元素b,分值發(fā)生了變化,移除之前的元素,重新按照新的分值排序 (integer) 0 127.0.0.1:6379> zrange zset1 0 -1 withscores1) "a"2) "1"3) "x"4) "1.5"5) "y"6) "2"7) "c"8) "3"9) "d" 10) "4" 11) "b" 12) "5"

? zrem :刪除zset名稱key中的member元素

? zrem zset member

127.0.0.1:6379> zrange zset1 0 -1 withscores1) "a"2) "1"3) "x"4) "1.5"5) "y"6) "2"7) "c"8) "3"9) "d" 10) "4" 11) "b" 12) "5" 127.0.0.1:6379> zrem zset1 a (integer) 1 127.0.0.1:6379> zrange zset1 0 -1 withscores1) "x"2) "1.5"3) "y"4) "2"5) "c"6) "3"7) "d"8) "4"9) "b" 10) "5"

? zrank 返回有序集合中指定成員的索引(從小到大排序)

? zrevrank 返回有序集合中指定成員的排名,有序集成員按分?jǐn)?shù)值遞減(從大到小)排序

127.0.0.1:6379> zrange zset1 0 -1 withscores1) "x"2) "1.5"3) "y"4) "2"5) "c"6) "3"7) "d"8) "4"9) "b" 10) "5" 127.0.0.1:6379> zrank zset1 d (integer) 3 //第4個(gè)位置 127.0.0.1:6379> zrevrank zset1 d (integer) 1 //第2個(gè)位置

? zcard 返回集合里所有元素的個(gè)數(shù)

? zcount 返回集合中score在給定區(qū)間中的數(shù)量

127.0.0.1:6379> zrange zset1 0 -1 withscores1) "x"2) "1.5"3) "y"4) "2"5) "c"6) "3"7) "d"8) "4"9) "b" 10) "5" 127.0.0.1:6379> zcard zset1 (integer) 5 127.0.0.1:6379> zcount zset1 1 3 (integer) 3

? zincrby key increment member: 有序集合中對(duì)指定成員的分?jǐn)?shù)加上增量 increment

? zrangebyscore key min max [WITHSCORES] [LIMIT] :通過分?jǐn)?shù)返回有序集合指定區(qū)間內(nèi)的成員

? zremrangebyrank key start stop :移除有序集合中給定的排名區(qū)間的所有成員

? zremrangebyscore key min max:移除有序集合中給定的分?jǐn)?shù)區(qū)間的所有成員

轉(zhuǎn)載于:https://my.oschina.net/u/3712726/blog/1554489

總結(jié)

以上是生活随笔為你收集整理的Redis入门到精通-Redis数据类型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。