五大数据类型

cd src//切换到src目录下
切换到管理员
redis-server /etc/redis/redis.conf
redis-cli
建立数据set k1 hello
得到数据 get k1
dbsize查看库中数据个数
keys *查看数据
flushdb清除当前数据库
flushAll清楚所有数据库
数据库共有16个
切换到其它数据库的命令 select 第几个数据库
redis的五大数据类型:
String(字符串) Hash(哈希类似java中的map) List(列表) Set(集合) Zset(sorted set:有序集和)
String(字符串)
string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
string类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512M
Hash(哈希)
Redis hash 是一个键值对集合。
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
类似Java里面的Map<String,Object>
List(列表)
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)。
它的底层实际是个链表
Set(集合)
Redis的Set是string类型的无序集合。它是通过HashTable实现实现的,
zset(sorted set:有序集合)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。
redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。

EXISTS k1查询是否有这个数据
move +变量名+要移到的数据库
expire key +秒数为给定的key设置国企时间
ttl key查看还有多少秒过期-1表示永不过期-2表示已经过期
type key查看数据类型
del mylist删除

append k1 11111在后面追加数据
strlen查询变量的长度
INCR k2依次增加1
decr k2依次减少1
INCRBY k2 3一次增加3
DECRBY k2 3每次减少3
getrange key value value 获取从第几个到第几个的数值,和数组类似
127.0.0.1:6379> SETRANGE k1 0 xxxx 从第0个开始设置xxx
setex k3 10 v3 设置变量k3 +时间(秒数)+里面的数值后消失
127.0.0.1:6379> setnx k11 v11 建立一个变量和数值
mset k1 v1 k2 v2 k3 v3 同时设置多了变量和值
mget k1 k2 k3 得到多个变量的值
MSETNX k3 v3 k4 v4 存入的两个数值一个已经存在,一个不存在。两个都不会存进去
MSETNX k4 v4 k5 v5存入的两个数值都不存在的时候,两个都可以存入
Lpush从左边依次进入
127.0.0.1:6379> LPUSH list01 1 2 3 4 5
(integer) 5
rpush从右边依次进入
127.0.0.1:6379> rPUSH list02 1 2 3 4 5
(integer) 5
正着进入,反向出
127.0.0.1:6379> LRANGE list01 0 -1
1) "5"
2) "4"
3) "3"
4) "2"
5) "1"
反向进入,正向输出
127.0.0.1:6379> LRANGE list02 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
LPOP栈顶的输出
127.0.0.1:6379> LPOP list01
"5"
RPOP栈底的输出
127.0.0.1:6379> RPOP list01
"1"
127.0.0.1:6379> RPOP list02
"5"
127.0.0.1:6379> LPOP list02
"1"
127.0.0.1:6379> LRANGE list01 0 -1
1) "4"
2) "3"
3) "2"
127.0.0.1:6379> LRANGE list02 0 -1
1) "2"
2) "3"
4)"4"
LPOP和RPOP输出后就不在栈里面
127.0.0.1:6379> LINDEX list01 0 LINDEX按照索引下标获得元素
"4"
127.0.0.1:6379> LINDEX list01 3
(nil)
127.0.0.1:6379> LINDEX list02 0
"2"
127.0.0.1:6379> LLEN list01 LLEN计算出list的长度
(integer) 3
Lrem key 删除N个value LREM list03 2 1
127.0.0.1:6379> LTRIM list01 0 4
OK
127.0.0.1:6379> LRANGE list01 0 -1
1) "8"
2) "7"
3) "6"
4) "5"
5) "4"
开始index结束index,截取指定长度重新赋值给key
RPOPLPUSH把list01的栈底放在list02的栈顶
127.0.0.1:6379> LRANGE list01 0 -1
1) "8"
2) "7"
3) "6"
4) "5"
5) "4"
127.0.0.1:6379> LRANGE list02 0 -1
1) "2"
2) "3"
3) "4"
127.0.0.1:6379> RPOPLPUSH list01 list02
"4"
127.0.0.1:6379> LRANGE list02 0 -1
1) "4"
2) "2"
3) "3"
4) "4"
lset key index value
127.0.0.1:6379> LRANGE list01 0 -1
1) "8"
2) "7"
3) "6"
4) "5"
127.0.0.1:6379> LSET list01 1 x
OK
127.0.0.1:6379> LRANGE list01 0 -1
1) "8"
2) "x"
3) "6"
4) "5"
LINSERT key before value value在某个值之前插入数值
LINSERT key after value value在某个值之前插入数值
127.0.0.1:6379> LINSERT list01 before x 7
(integer) 5
127.0.0.1:6379> LRANGE list01 0 -1
1) "8"
2) "7"
3) "x"
4) "6"
5) "5"
127.0.0.1:6379> LINSERT list01 after 5 4
(integer) 6
127.0.0.1:6379> LRANGE list01 0 -1
1) "8"
2) "7"
3) "x"
4) "6"
5) "5"
6) "4"
set的例子、
SADD添加数据如果数据重复只添加一次
127.0.0.1:6379> SADD set01 1 1 2 2 3 3
(integer) 3
SMEMBERS查询数据
127.0.0.1:6379> SMEMBERS set01
1) "1"
2) "2"
3) "3"
SISMEMBER 查询数据为某个值的个数
127.0.0.1:6379> SISMEMBER set01 1
(integer) 1
127.0.0.1:6379> SISMEMBER set01 x
(integer) 0
SCARD获取集合里面元素个数
127.0.0.1:6379> SCARD set01
(integer) 3
SREM删除某个元素
127.0.0.1:6379> SREM set01 3
(integer) 1
127.0.0.1:6379> SMEMBERS set01
1) "1"
2) "2"
SRANDMEMBER key 某个整数(随意出三个数值)
127.0.0.1:6379> SADD set02 1 2 3 4 5 6 7 8
(integer) 8
127.0.0.1:6379> SRANDMEMBER set02 3
1) "1"
2) "3"
3) "5"
sadd添加数据时,如果加入的数据和原来的数据有相同的部分就会只添加不同的部分
SPOP随机出栈
127.0.0.1:6379> SMEMBERS set01
1) "1"
2) "2"
127.0.0.1:6379> sadd set01 1 2 3 4 5 6 7 8
(integer) 6
127.0.0.1:6379> SMEMBERS set01
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
8) "8"
127.0.0.1:6379> SPOP set01
"5"
127.0.0.1:6379> SMEMBERS set01
1) "1"
2) "2"
3) "3"
4) "4"
5) "6"
6) "7"
7) "8"
SMOVE将set01中的某个数值转移到set02的栈底中
127.0.0.1:6379> SADD set02 x y z
(integer) 3
127.0.0.1:6379> SMEMBERS set02
1) "z"
2) "y"
3) "x"
127.0.0.1:6379> SMOVE set01 set02 3
(integer) 1
127.0.0.1:6379> SMEMBERS set02
1) "z"
2) "y"
3) "x"
4) "3"
127.0.0.1:6379> SMEMBERS set01
1) "1"
2) "2"
3) "4"
4) "6"
5) "7"
6) "8"
数学集合类
SDIFF在第一个set里面而不再后面任何一个set里的项
127.0.0.1:6379> SADD set01 1 2 3 4 5
(integer) 5
127.0.0.1:6379> SADD set02 1 2 3 a b
(integer) 5
127.0.0.1:6379> SDIFF set01 set02
1) "4"
2) "5"
SINTERset中相同的值
127.0.0.1:6379> SINTER set01 set02
1) "1"
2) "2"
3) "3"
SUNIONset所有的数值的并集
127.0.0.1:6379> SUNION set01 set02
1) "a"
2) "2"
3) "4"
4) "b"
5) "5"
6) "3"
7) "1"
hash的:KV模式不变,V是一个键值对
HSET user是一个key ,id 11都是value,是键值对
127.0.0.1:6379> HSET user id 11
(integer) 1
hget取值的时候也是先取user,再取id
127.0.0.1:6379> hget user id
"11"
使用hset和hget的时候都是只能获取一个键值对
127.0.0.1:6379> hset user name aa
(integer) 1
127.0.0.1:6379> hget user name
"aa"
HMSET可以设置多个value键值对
127.0.0.1:6379> HMSET customer id 11 name ss age 15
OK
HMGET可以得到多个value
127.0.0.1:6379> HMGET customer id name age
1) "11"
2) "ss"
3) "15"
HGETALL得到全部的键值对
127.0.0.1:6379> HGETALL customer
1) "id"
2) "11"
3) "name"
4) "ss"
5) "age"
6) "15"
HDEL删除user中的name
127.0.0.1:6379> HDEL user name
(integer) 1
127.0.0.1:6379> HGET user name
(nil)
HLEN得到有多少个键值对
127.0.0.1:6379> HLEN user
(integer) 1
127.0.0.1:6379> HLEN customer
(integer) 3
HEXISTS key在key里面的某个值的key,有的话是1,没有为0
127.0.0.1:6379> HEXISTS customer age
(integer) 1
127.0.0.1:6379> HEXISTS customer phone
(integer) 0
HKEYS得到customer的keys
127.0.0.1:6379> HKEYS customer
1) "id"
2) "name"
3) "age"
HVALS得到customer的values
127.0.0.1:6379> HVALS customer
1) "11"
2) "ss"
3) "15"
HINCRBY依次增加customer中的age的数值增加value
127.0.0.1:6379> HGET customer age
"15"
127.0.0.1:6379> HINCRBY customer age 1
(integer) 16
127.0.0.1:6379> HINCRBY customer age 1
(integer) 17
HINCRBYFLOAT依次增加小数
127.0.0.1:6379> hset customer score 91.5
(integer) 1
127.0.0.1:6379> HINCRBYFLOAT customer score 0.5
"92"
HSETNX给hash表中不存在的赋值,成功是1,失败是0
127.0.0.1:6379> HSETNX customer age 17
(integer) 0
127.0.0.1:6379> HSETNX customer email abc@126.com
(integer) 1
zset详解
Zadd命令:
将一个或多个 member 元素及其 score 值加入到有序集 key 当中。
如果某个 member 已经是有序集的成员,那么更新这个 member 的 score 值,并通过重新插入这个 member 元素,来保证该 member 在正确的位置上。
score 值可以是整数值或双精度浮点数。
如果 key 不存在,则创建一个空的有序集并执行 ZADD 操作。
当 key 存在但不是有序集类型时,返回一个错误。
ZRANGE
127.0.0.1:6379> ZADD zset01 60 v1 70 v2 80 v3 90 v4 100 v5
(integer) 5
ZRANGE显示出添加的信息
127.0.0.1:6379> ZRANGE zset01 0 -1
1) "v1"
2) "v2"
3) "v3"
4) "v4"
5) "v5"
127.0.0.1:6379> ZRANGE zset01 0 -1 withscores
1) "v1"
2) "60"
3) "v2"
4) "70"
5) "v3"
6) "80"
7) "v4"
8) "90"
9) "v5"
10) "100"
ZRANGEBYSCORE找出某个范围的值
127.0.0.1:6379> ZRANGEBYSCORE zset01 60 90
1) "v1"
2) "v2"
3) "v3"
4) "v4"
ZRANGEBYSCORE加上( 意思是不包含
127.0.0.1:6379> ZRANGEBYSCORE zset01 (60 (90
1) "v2"
2) "v3"
127.0.0.1:6379> ZRANGEBYSCORE zset01 60 (90
1) "v1"
2) "v2"
3) "v3"
ZRANGEBYSCORE limit 从第几个开始截取几个
127.0.0.1:6379> ZRANGEBYSCORE zset01 60 90 limit 2 2
1) "v3"
2) "v4"
ZREM key某score下对应的value值,作用是删除元素
127.0.0.1:6379> ZREM zset01 v5
(integer) 1
127.0.0.1:6379> ZRANGE zset01 0 -1 withscores
1) "v1"
2) "60"
3) "v2"
4) "70"
5) "v3"
6) "80"
7) "v4"
8) "90"
ZCARD
.0.1:6379> ZCARD zset01
(integer) 4
ZCOUNT统计出某个范围的个数
127.0.0.1:6379> ZCOUNT zset01 60 80
(integer) 3
ZRANK找到对应值的下标
127.0.0.1:6379> ZRANK zset01 v4
(integer) 3
ZSCORE找到对应key的value值
127.0.0.1:6379> ZSCORE zset01 v4
"90"
ZREVRANK key value 作用是逆序获得下标值
127.0.0.1:6379> ZREVRANK zset01 v4
(integer) 0
ZREVRANGE和zrange的区别,一个正序输出,一个倒序输出
127.0.0.1:6379> ZREVRANGE zset01 0 -1
1) "v4"
2) "v3"
3) "v2"
4) "v1"
127.0.0.1:6379> ZRANGE zset01 0 -1
1) "v1"
2) "v2"
3) "v3"
4) "v4"
ZREVRANGEBYSCORE根据成绩从大到小输出
127.0.0.1:6379> ZREVRANGEBYSCORE zset01 90 60
1) "v4"
2) "v3"
3) "v2"
4) "v1"

原文地址:https://www.cnblogs.com/mxf97826/p/8707970.html