Redis 基础命令和数据类型

  • 一、Redis的官方简介
    • Introduction to Redis
  • 二、Redis基础命令
  • 三、五大基础类型
    • 1.String
    • 2.List
    • 3.Set
    • 4.Hash(哈希)
    • 5.zset(有序集合)
  • 引用来源

一、Redis的官方简介

Introduction to Redis

Learn about the Redis open source project
Redis is an open source (BSD licensed), in-memory data structure store used as a database, cache, message broker, and streaming engine. Redis provides data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes, and streams. Redis has built-in replication, Lua scripting, LRU eviction, transactions, and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster.
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。

二、Redis基础命令

1.查看当前redis是否成功启动
ps -ef | grep redis

[root@localhost redis]# ps -ef | grep redis
root       3358      1  0 3月25 ?       00:04:19 ./bin/redis-server 127.0.0.1:6379
root      48716  75519  0 10:58 pts/1    00:00:00 grep --color=auto redis
[root@localhost redis]#

2.打开redis的client

[root@localhost redis]# ./bin/redis-cli
127.0.0.1:6379>

3.基础命令

127.0.0.1:6379> keys * //查看当前数据库中所有的key
1) "age"
2) "name"
127.0.0.1:6379> flushall //清空所有的key
OK
127.0.0.1:6379> keys *
(empty array)  //当前key都被清空
127.0.0.1:6379> set name zhouquan
OK
127.0.0.1:6379> get name
"zhouquan"
127.0.0.1:6379> exists name //判断数据库是否存在key值
(integer) 1 //1表示是,0表示否
127.0.0.1:6379> exists age
(integer) 0
127.0.0.1:6379> move name 1 //移除key
(integer) 1
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> set name zhouquan
OK
127.0.0.1:6379> expire name 5 //设置过期时间
(integer) 1
127.0.0.1:6379> ttl name //查看key的剩余时间
(integer) 1
127.0.0.1:6379> ttl name
(integer) -2
127.0.0.1:6379> keys * //过期后数据库中key已经清空
(empty array)
127.0.0.1:6379>

4.官网查看命令文档
地址:https://redis.io/commands/

三、五大基础类型

String、List、Set、Hash、zset

1.String

127.0.0.1:6379> flushall
OK
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> exists k
(integer) 0
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> append k1 "kobe" //字符串追加
(integer) 6
127.0.0.1:6379> get k1
"v1kobe"
127.0.0.1:6379> strlen k1 //字符串追加
(integer) 6
##################################################
127.0.0.1:6379> set view 0
OK
127.0.0.1:6379> get view
"0"
127.0.0.1:6379> incr view //自增1
(integer) 1
127.0.0.1:6379> decr view //自减一
(integer) 0
127.0.0.1:6379> get view
"0"
127.0.0.1:6379> incrby view 5 //设置步长,指定增量为5
(integer) 5
127.0.0.1:6379> incrby view 5
(integer) 10
127.0.0.1:6379> Decrby view 5
(integer) 5
127.0.0.1:6379>
##################################################
#获取字符串范围
127.0.0.1:6379> set name JeremyLin
OK
127.0.0.1:6379> getrange 0 5
"Jeremy"
127.0.0.1:6379> getrange name 0 -1
"JeremyLin"
127.0.0.1:6379> ##################################################
#替换
127.0.0.1:6379> setrange name 0 test
(integer) 9
127.0.0.1:6379> get name
"testmyLin"
127.0.0.1:6379> ##################################################
#setex(set with expire) //设置过期时间
#setnex( set if not exist) //不存在时则设置(在分布式锁中常常使用)127.0.0.1:6379> setex testex 30 v1
OK
127.0.0.1:6379> get testex
"v1"
127.0.0.1:6379> ttl testex
(integer) 13
127.0.0.1:6379> ttl testex
(integer) 10
127.0.0.1:6379> ttl testex
(integer) 7
127.0.0.1:6379> ttl testex
(integer) -2
127.0.0.1:6379> get testex
(nil)
127.0.0.1:6379> setnx testex "hello"
(integer) 1
127.0.0.1:6379> keys *
1) "testex"
2) "name"
127.0.0.1:6379> get testex
"hello"
127.0.0.1:6379> ##################################################
#mset //批量设置值
#mget //批量获取值127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3 //同时设置多个值
OK
127.0.0.1:6379> keys *
1) "k2"
2) "k3"
3) "k1"
127.0.0.1:6379> mget k1 k2 k3 //同时获取多个值
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379> msetnx k1 v1 k4 v4 //msetnx是一个原子性的操作
(integer) 0
127.0.0.1:6379> get k4
(nil)
127.0.0.1:6379>
##################################################
#user:{id}:{field} //对象的方式存取值
127.0.0.1:6379> mset user:1:name zhouquan user:1:age 25
OK
127.0.0.1:6379> mget user:1:name user:1:age
1) "zhouquan"
2) "25"
127.0.0.1:6379>
##################################################
127.0.0.1:6379> getset db mysql //如果不存在值,则返回nil
(nil)
127.0.0.1:6379> get db
"mysql"
127.0.0.1:6379> getset db redis
"mysql"
127.0.0.1:6379> get db //如果存在值,获取原来的值,并设置新的值
"redis"
127.0.0.1:6379> 

String类型的使用场景:

  1. 计数器
  2. 统计多单位的数量,例如浏览量相关
  3. 粉丝数量或者其他

2.List

在list中,可以设计成栈、队列、阻塞队列

#lpush
#rpush
127.0.0.1:6379> lpush list one two three //将一个或多个值,从左边插入到列表的头部
(integer) 3
127.0.0.1:6379> Lrange list 0 -1
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> rpush list four //将一个或多个值,从右边插入到列表的尾部
(integer) 4
127.0.0.1:6379> Lrange list 0 -1
1) "three"
2) "two"
3) "one"
127.0.0.1:6379>
##################################################
#lpop
#rpop
127.0.0.1:6379> lpop list  #移除list的第一个元素
"three"
127.0.0.1:6379> rpop list #移除list的最后一个元素
"four"
127.0.0.1:6379> lrange list 0 -1
1) "two"
2) "one"
127.0.0.1:6379>
##################################################
#lindex 通过下表获取list中的值
#llen 获取列表的长度
127.0.0.1:6379> lrange list 0 -1
1) "four"
2) "three"
3) "two"
4) "one"
127.0.0.1:6379> lindex list 0
"four"
127.0.0.1:6379> lindex list 3
"one"
127.0.0.1:6379> llen list
(integer) 4
##################################################
#lrem 移除list集合中指定个数的value 精确匹配
127.0.0.1:6379> lrange list 0 -1
1) "four"
2) "four"
3) "three"
4) "two"
5) "one"
127.0.0.1:6379> lrem list 1 one
(integer) 1
127.0.0.1:6379> lrange list 0 -1
1) "four"
2) "four"
3) "three"
4) "two"
127.0.0.1:6379> lrem list 2 four
(integer) 2
127.0.0.1:6379> lrange list 0 -1
1) "three"
2) "two"
127.0.0.1:6379>
##################################################
trim:list截取
127.0.0.1:6379> lrange list 0 -1
1) "six"
2) "five"
3) "three"
4) "two"
127.0.0.1:6379> ltrim list 1 2
OK
127.0.0.1:6379> lrange list 0 -1
1) "five"
2) "three"
127.0.0.1:6379>
##################################################
#rpoplpush #移除列表中的最后一个元素到新的列表中
127.0.0.1:6379> lrange list 0 -1
1) "seven"
2) "six"
3) "seven"
4) "six"
5) "five"
127.0.0.1:6379> rpoplpush list newlist
"five"
127.0.0.1:6379> lrange list 0 -1
1) "seven"
2) "six"
3) "seven"
4) "six"
127.0.0.1:6379> lrange otherlist 0 -1
(empty array)
127.0.0.1:6379> lrange newlist 0 -1
1) "five"
##################################################
#lset 将列表中指定下表的值替换为另一个值
127.0.0.1:6379> lset list 0 other
OK
127.0.0.1:6379> lrange list 0 -1
1) "other"
2) "six"
3) "seven"
4) "six"
##################################################
#linsert //将某个具体的value插入到指定的某个元素的前面或者后面
127.0.0.1:6379> linsert list before seven insert1
(integer) 5
127.0.0.1:6379> lrange list 0 -1
1) "other"
2) "six"
3) "insert1"
4) "seven"
5) "six"
127.0.0.1:6379>

小结:

  • 本质上是一个链表,before node after ,left right都可以插入值
  • 如果移除掉列表中的所有元素,也表示不存在
  • 在两边插入或者改动值,效率最高!中间元素效率相对较低

3.Set

基础命令说明:

  • sadd key member1[menber2] 向集合中无序添加一个或多个成员
  • scard key 获取集合的大小
  • smembers key 返回指定key中的所有成员
  • sismenbers key member 查询member元素是否为集合中的成员,1:是,0:否
  • srandmember key [count] 随机返回集合中的元素,默认为1
  • spop key [count] 随机移除并返回count个成员,默认为1
  • smove source destination member 将source集合中的成员移动到destination集合
  • srem key member1[member2…] 移除集合中的一个或多个元素
  • sdiff key1 [key2…] 返回所有集合的差集
  • sdiffstore destination key1[key2…] 将差集的结果保存到新的集合中
  • sunionstore destination key1[key2…] 将并集的结果保存到新的集合中
  • sinter key1 [key2…] 返回所有集合的交集
  • sunion key1 [key2…]返回所有集合的并集
  • sscan key [match pattern] [count count] 在数据量较大的情况下,部分遍历数据

···
127.0.0.1:6379> sadd myset hello world test test //sadd命令添加元素
(integer) 3
127.0.0.1:6379> smembers myset //查看指定set的所有值

  1. “world”
  2. “hello”
  3. “test”
    127.0.0.1:6379> sismember myset test //判断某一个值是不是在set集合中
    (integer) 1
    127.0.0.1:6379> sismember myset test1
    (integer) 0
    127.0.0.1:6379>
    ##################################################
    127.0.0.1:6379> sadd myset hello world test test
    (integer)
    127.0.0.1:6379> smembers myset
  4. “world”
  5. “hello”
  6. “test”
    127.0.0.1:6379> smembers myset test
    (error) ERR wrong number of arguments for ‘smembers’ command
    127.0.0.1:6379> sismember myset test
    (integer) 1
    127.0.0.1:6379> sismember myset test1
    (integer) 0
    127.0.0.1:6379>
    ##################################################
    127.0.0.1:6379> scard myset //获取set集合中的元素个数
    (integer) 3
    ##################################################
    127.0.0.1:6379> srem myset hello //移除set集合中的指定元素
    (integer) 1
    127.0.0.1:6379> smembers myset
  7. “world”
  8. “test”
    127.0.0.1:6379> srandmember myset 1 //随机抽取元素
  9. “test”
    127.0.0.1:6379> srandmember myset 1
  10. “test”
    127.0.0.1:6379> srandmember myset 1
  11. “world”
    ##################################################
    127.0.0.1:6379> smove myset newset test #将一个指定的值,移动到另一个set集合
    (integer) 1
    127.0.0.1:6379> smembers newset
  12. “test”
    ##################################################
    127.0.0.1:6379> smembers setx
  13. “m1”
  14. “m2”
  15. “m6”
  16. “m4”
    127.0.0.1:6379> smembers sety
  17. “m5”
  18. “m2”
  19. “m6”
    127.0.0.1:6379> sdiff setx sety //获取两个集合中的差集
  20. “m1”
  21. “m4”
    127.0.0.1:6379> sinter setx sety //获取两个集合中的交集
  22. “m2”
  23. “m6”
    127.0.0.1:6379> sunion setx sety //获取两个集合中的并集
  24. “m6”
  25. “m4”
  26. “m1”
  27. “m2”
  28. “m5”

···
总结:
1.Redis的Set是String类型的无序集合,具有集合的无序性和唯一性。
2.由于集合通过哈希表实现,因此增删查的时间复杂度都是O(1)。
3.集合的最大成员量为2^32 -1(2的32次方减一),即单个集合可存储40亿+数据。

4.Hash(哈希)

Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
Set就是一种简化的Hash,只变动key,而value使用默认值填充。可以将一个Hash表作为一个对象进行存储,表中存放对象的信息。

  • HSET key field value 将哈希表 key 中的字段 field 的值设为 value
    。重复设置同一个field会覆盖,返回0
  • HMSET key field1 value1 [field2 value2…] 同时将多个 field-value (域-值)对设置到哈希表 key 中。
  • HSETNX key field value 只有在字段 field 不存在时,设置哈希表字段的值。
  • HEXISTS key field 查看哈希表 key 中,指定的字段是否存在。
  • HGET key field value 获取存储在哈希表中指定字段的值
  • HMGET key field1 [field2…] 获取所有给定字段的值
  • HGETALL key 获取在哈希表key 的所有字段和值
  • HKEYS key 获取哈希表key中所有的字段
  • HLEN key 获取哈希表中字段的数量
  • HVALS key 获取哈希表中所有值
  • HDEL key field1 [field2…] 删除哈希表key中一个/多个field字段
  • HINCRBY key field n 为哈希表 key 中的指定字段的整数值加上增量n,并返回增量后结果 一样只适用于整数型字段
  • HINCRBYFLOAT key field n 为哈希表 key 中的指定字段的浮点数值加上增量 n。
  • HSCAN key cursor [MATCH pattern] [COUNT count] 迭代哈希表中的键值对。
127.0.0.1:6379> hset stu name liqi //将stu哈希表作为一个对象,设置name
(integer) 1
127.0.0.1:6379> hset stu name dazhuang //重复设置field进行覆盖,且返回0
(integer) 0
127.0.0.1:6379> hget stu name
"dazhuang"  //已然被修改
127.0.0.1:6379> hset stu age 30
(integer) 1
127.0.0.1:6379> hmset stu sex 1 tel 5126541254 birth 1996 //批量设置
OK
127.0.0.1:6379> hsetnx stu name liqi  //field已存在,设置失败
(integer) 0
127.0.0.1:6379> hsetnx stu email liqi@qq.com //field不存在,设置成功
(integer) 1
127.0.0.1:6379>
##################################################
127.0.0.1:6379> hexists stu name //判断key中是否存在field
(integer) 1
127.0.0.1:6379> hexists stu test
(integer) 0
127.0.0.1:6379>
##################################################
127.0.0.1:6379> hget stu name //获取key中指定的字段值
"dazhuang"
127.0.0.1:6379> hmget stu name age tel email  //获取key中多个字段值
1) "dazhuang"
2) "30"
3) "5126541254"
4) "liqi@qq.com"
127.0.0.1:6379> hgetall stu   //获取key中全部的key-value1) "name"2) "dazhuang"3) "age"4) "30"5) "sex"6) "1"7) "tel"8) "5126541254"9) "birth"
10) "1996"
11) "email"
12) "liqi@qq.com"
127.0.0.1:6379>
##################################################
127.0.0.1:6379> hkeys stu //获取key中所有的field
1) "name"
2) "age"
3) "sex"
4) "tel"
5) "birth"
6) "email"
127.0.0.1:6379> hlen stu //获取key的长度
(integer) 6
127.0.0.1:6379> hvals stu //获取所有的value值
1) "dazhuang"
2) "30"
3) "1"
4) "5126541254"
5) "1996"
6) "liqi@qq.com"
127.0.0.1:6379>
##################################################
127.0.0.1:6379> hincrby stu age 1 //自增1
(integer) 32
127.0.0.1:6379> hincrby stu age 1
(integer) 33
127.0.0.1:6379> hincrbyfloat stu weight 0.5  //自增0.5 需要注意integer类型的数据不能自增float
"2.5"
127.0.0.1:6379> hincrbyfloat stu weight 0.5
"3"
127.0.0.1:6379> hkeys stu
1) "name"
2) "age"
3) "sex"
4) "tel"
5) "birth"
6) "email"
7) "weight"
127.0.0.1:6379> hdel stu sex //移除指定key中的field
(integer) 1
127.0.0.1:6379> hkeys stu
1) "name"
2) "age"
3) "tel"
4) "birth"
5) "email"
6) "weight"

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

5.zset(有序集合)

相对于set集合来说,zset集合的每一个元素都会关联一个double类型的分数(score),有些类似于es数据库中的score字段,作为一个权重值进行排序

  • ZADD key score member1 [score2 member2] 向有序集合添加一个或多个成员,或者更新已存在成员的分数
  • ZCARD key 获取有序集合的成员数
  • ZCOUNT key min max 计算在有序集合中指定区间score的成员数
  • ZINCRBY key n member 有序集合中对指定成员的分数加上增量 n
  • ZSCORE key member 返回有序集中,成员的分数值
  • ZRANK key member 返回有序集合中指定成员的索引
  • ZRANGE key start end 通过索引区间返回有序集合成指定区间内的成员
  • ZRANGEBYLEX key min max 通过字典区间返回有序集合的成员
  • ZRANGEBYSCORE key min max 通过分数返回有序集合指定区间内的成员=-inf 和 +inf分别表示最小最大值,只支持开区间()==
  • ZLEXCOUNT key min max 在有序集合中计算指定字典区间内成员数量
  • ZREM key member1 [member2…] 移除有序集合中一个/多个成员
  • ZREMRANGEBYLEX key min max 移除有序集合中给定的字典区间的所有成员
  • ZREMRANGEBYRANK key start stop 移除有序集合中给定的排名区间的所有成员
  • ZREMRANGEBYSCORE key min max 移除有序集合中给定的分数区间的所有成员
  • ZREVRANGE key start end 返回有序集中指定区间内的成员,通过索引,分数从高到底
  • ZREVRANGEBYSCORRE key max min 返回有序集中指定分数区间内的成员,分数从高到低排序
  • ZREVRANGEBYLEX key max min 返回有序集中指定字典区间内的成员,按字典顺序倒序
  • ZREVRANK key member 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序
  • ZINTERSTORE destination numkeys key1 [key2 …] 计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中,numkeys:表示参与运算的集合数,将score相加作为结果的score
  • ZUNIONSTORE destination numkeys key1 [key2…] 计算给定的一个或多个有序集的交集并将结果集存储在新的有序集合 key 中
  • ZSCAN key cursor [MATCH pattern] [COUNT count] 迭代有序集合中的元素(包括元素成员和元素分值)

···
127.0.0.1:6379> zadd myzset 1 m1 2 m2 3 m3 4 m4 //添加元素
(integer) 4
127.0.0.1:6379> zcard myzset //查看zset集合中的成员个数
(integer) 4
127.0.0.1:6379> zcount myzset 0 2 //获取指定索引下的元素个数
(integer) 2
127.0.0.1:6379> zcount myzset 0 3
(integer) 3
127.0.0.1:6379> zcount myzset 0 5
(integer) 4
127.0.0.1:6379> zincrby myzset 5 m1 //自增5
“6”
127.0.0.1:6379> zscore myzset m1 //获取指定key对应的score
“6”
127.0.0.1:6379> zrank myzset m1 //获取指定key对应的字典排序
(integer) 3
127.0.0.1:6379> zrank myzset m2
(integer) 0
127.0.0.1:6379> zrange myzset 0 -1 //获取zset集合中所有的key元素

  1. “m2”
  2. “m3”
  3. “m4”
    ##################################################
    127.0.0.1:6379> zrangebylex myzset - + //通过字典区间返回有序集合的成员
  4. “m2”
  5. “m3”
  6. “m4”
  7. “m1”
    127.0.0.1:6379> zrangebylex myzset - + limit 0 2 //分页
  8. “m2”
  9. “m3”
    127.0.0.1:6379> zrangebylex myzset - + limit 1 2
  10. “m3”
  11. “m4”
    127.0.0.1:6379> zrangebylex myzset (- [m4 //通过字典区间返回有序集合的成员
  12. “m2”
  13. “m3”
  14. “m4”
  15. “m1”
    127.0.0.1:6379> zrangebylex myzset (- [m3
  16. “m2”
  17. “m3”
    127.0.0.1:6379> zrangebylex myzset (- [m1
    (empty array)
    ##################################################
    127.0.0.1:6379> zrangebyscore myzset 1 10 //获取指定score的成员key
  18. “m2”
  19. “m3”
  20. “m4”
  21. “m1”
    127.0.0.1:6379> zlexcount myzset - + //在有序集合中计算指定字典区间内成员数量
    (integer) 4

127.0.0.1:6379> ZREM testset abc //移除成员abc
(integer) 1

127.0.0.1:6379> ZREMRANGEBYLEX myzset [m1 [m4 //移除字典区间[apple,java]中的所有成员
(integer) 3

127.0.0.1:6379> ZREMRANGEBYRANK myzset 0 1 // 移除排名0~1的所有成员
(integer) 2

127.0.0.1:6379> ZREMRANGEBYSCORE myzset 0 3 // 移除score在 [0,3]的成员
(integer) 2

127.0.0.1:6379> zrem myzset m1 //移除指定key
(integer) 1
127.0.0.1:6379> zrevrange myzset 0 3 //返回排序结果的 索引的0-3

  1. “m4”
  2. “m3”
  3. “m2”
    127.0.0.1:6379> zrevrangebyscore myzset 6 2 // 按score递减顺序 返回集合中分数在[2,6]之间的成员
  4. “m4”
  5. “m3”
  6. “m2”
    127.0.0.1:6379>
    ##################################################
    127.0.0.1:6379> zadd mathscore 90 xm 95 xh 87 xg
    (integer) 3
    127.0.0.1:6379> zadd engscore 74 xm 85 xh 78 xg
    (integer) 3
    127.0.0.1:6379> zinterstore sumscore 2 mathscore engscore //将两个集合合并到指定集合
    (integer) 3
    127.0.0.1:6379> zrange sumscore 0 -1 withscores //根据key对两个score求和
  7. “xm”
  8. “164”
  9. “xg”
  10. “165”
  11. “xh”
  12. “180”
    127.0.0.1:6379> zunionstore lowscore 2 matchscore engscore aggregate min //求两个集合并集的最小值并存储到lowscore
    (integer) 3
    127.0.0.1:6379> zrange lowscore 0 -1 withscores //查看集合中的排序结果
  13. “xm”
  14. “74”
  15. “xg”
  16. “78”
  17. “xh”
  18. “85”
    127.0.0.1:6379>
    ···
    小结:
  • set排序 存储班级成绩表 工资表排序!
  • 普通消息,1.重要消息 2.带权重进行判断
  • 排行榜应用实现,取Top N测试

引用来源

本文参考:https://www.cnblogs.com/kylinxxx/p/13770063.html,基本上都是自己上手后写的,基于b站up主“狂神说”

Redis 基本命令和五大基础数据类型相关推荐

  1. Redis第二讲【Redis基本命令和五大数据结构】

    [二.Redis基本命令和五大数据结构] redis的基础知识和命令 redis 是一个单进程(包装epoll函数来对读写事件进行相应) 默认有16个数据库,初始使用的数据库为0号库 默认端口为637 ...

  2. 表达式类型的实现数据结构_Redis系列(九)底层数据结构之五种基础数据类型的实现...

    前言 定义 字符串对象 int raw embstr 浮点数如何保存? 编码转换条件 总结 列表对象 总结 集合对象 intset hashtable 总结 有序集合对象 ziplist 编码 ski ...

  3. Redis中五大基本数据类型和三种特殊数据类型详解

    目录 介绍 概念 基本命令 redis是单线程的 五大基本数据类型 String 命令 应用场景 List 命令 应用场景 Set 命令 应用场景 Hash 命令 应用场景 Zset 命令 应用场景 ...

  4. python类型-python基础之五大标准数据类型

    学习一门语言,往往都是从Hello World开始. 但是笔者认为,在一个黑框框中输出一个"你好,世界"并没有什么了不起,要看透事物的本质,熟悉一门语言,就要了解其底层,就是我们常 ...

  5. 数据类型_分享redis中除5种基础数据类型以外的高级数据类型

    众所周知,在redis中的数据类型有String(字符串).hash(哈希).list(列表).set(集合).zset(有序集合)五种.但在这5种之外还有高级数据类型. 今天和大家介绍下常用的高级数 ...

  6. python基础之五大标准数据类型

    学习一门语言,往往都是从Hello World开始. 但是笔者认为,在一个黑框框中输出一个"你好,世界"并没有什么了不起,要看透事物的本质,熟悉一门语言,就要了解其底层,就是我们常 ...

  7. redis 基础数据类型及应用 1

    redis 基础数据类型及应用 1 redis简介 一. string 数据类型与结构(字符串) 1 string类型简介 2 常用命令 1.set 命令 2.get 命令 3.getset 命令 4 ...

  8. python五种基本数据类型_五大Python基础数据类型

    学习一门语言,往往都是从Hello World开始. 但是笔者认为,在一个黑框框中输出一个"你好,世界"并没有什么了不起,要看透事物的本质,熟悉一门语言,就要了解其底层,就是我们常 ...

  9. NoSQL概述-Redis安装-常用五大数据类型-概述Bitmaps,HyperLogLog,Geospatial和redis.conf 基本解析

    NoSQL 概述 NoSQL(NoSQL=Not Only SQL),意即"不仅仅是SQL",泛指 非关系型的数据库. NoSQL不依赖业务逻辑方式存储,而以简单的key-valu ...

  10. Redis入门 - 数据类型:5种基础数据类型详解

    Redis所有的key(键)都是字符串.我们在谈基础数据结构时,讨论的是存储值的数据类型,主要包括常见的5种数据类型,分别是:String.List.Set.Zset.Hash Redis入门 - 数 ...

最新文章

  1. eBay的Turmeric和VJet的源程序移到了GitHub上
  2. ***检测与网络审计产品是孪生兄弟吗?
  3. 分布式实时计算—Storm—基础介绍
  4. Chapter7-3_BERT and its family - ELMo, BERT, GPT, XLNet, MASS, BART, UniLM, ELECTRA, and more
  5. mysql left join 右表数据不唯一的情况解决方法
  6. @sql 单元测试_简单单词中使用tSQLt进行的常规SQL单元测试
  7. linux思考与实验答案,linux课后习题答案教材课后习题参考答案
  8. “Java引领技术人生”巡讲活动圆满结束
  9. 第二篇: Silverlight -- 下载与安装
  10. 昼夜双色导航主题模板 WordPress导航模板
  11. 【使用51单片机驱动1.54英寸墨水屏做一个简洁的贪吃蛇游戏】
  12. 肠道微生物会导致你变胖吗?
  13. 战地2142 我喜欢...
  14. Solana中的account
  15. 微信公众平台简易设计使用
  16. Study「Photoshop」:勾线图
  17. 项目管理需要建立团队文化
  18. 【前端html页面数据导出为pdf文件】
  19. Qt编写4K/8K大分辨率播放器(8K占用1%CPU)
  20. 画出含有四个节点的所有二叉树形态

热门文章

  1. matlab示波器有毛刺,在使用示波器时如何消除毛刺?
  2. 多元思维模型——全学科及其核心思维模型
  3. Java入门案例:模拟纸牌游戏拖拉机(升级)
  4. 关于网络小说均订的那些事:有些已成历史,有些在不断打破纪录
  5. MBR20100FCT低压降肖特基二极管ASEMI原装
  6. mysql-sql操作
  7. 操作系统 - 虚拟存储管理技术之虚拟页式存储管理
  8. 操作系统学习笔记(二十二)~虚拟存储技术+请求分页+页面置换
  9. fans域名启动全球调价
  10. C# socket 局域网聊天程序的一点心得