Redis数据类型操作命令

Redis教程:
http://www.runoob.com/redis/redis-commands.html
http://www.yiibai.com/redis/redis_quick_guide.html
##连接redis
[root@zabbix redis]# redis-cli -h localhost -p 6379 -a redis
##获取全局配置属性,日志级别
localhost:6379> CONFIG GET loglevel
1) "loglevel"
2) "notice"
##查看Server状态
localhost:6379> ping
PONG

Redis键操作:

##新建key设置为rain,如果存在则覆盖
localhost:6379> get name
"donald"
localhost:6379> set name rain
OK
##获取key的值
localhost:6379> get name
"rain"
##该命令返回存储在指定键的值的序列化版本。
localhost:6379> dump name
"\x00\x04rain\x06\x00\xdd\xd8YA\x0b\xa2K\t"
##此命令检查该键是否存在。
localhost:6379> exists name
(integer) 1
##指定键的过期时间
localhost:6379> expire name 100
(integer) 1
##获取键到期的剩余时间
localhost:6379> ttl name
(integer) 97
localhost:6379> ttl name
(integer) 93
localhost:6379> ttl name
(integer) -2
localhost:6379> get name
(nil)
localhost:6379> set name donald
OK
localhost:6379> get name
"donald"
##返回存储在键的数据类型的值
localhost:6379> type name
string
##更改键的名称
localhost:6379> rename name names
OK
localhost:6379> get name
(nil)
localhost:6379> get names
"donald"
##此命令删除键,如果存在
localhost:6379> del names
(integer) 1
localhost:6379> get names
(nil)
localhost:6379> 
##################
键操作可以对所有数据类型
###############


Redis String操作



#此命令用于在指定键设置值
localhost:6379> set name donald
OK
localhost:6379> get name
"donald"
#设置键的字符串值,并返回旧值
localhost:6379> getset name 1
"donald"
localhost:6379> get name
"1"
#得到存储在键的值的长度
localhost:6379> strlen name
(integer) 1
#增加键的整数值一次
localhost:6379> incr name
(integer) 2
localhost:6379> get name
"2"
localhost:6379> incr name
(integer) 3
#递减键一次的整数值
localhost:6379> decr name
(integer) 2
localhost:6379> get name
"2"
#设置键的值,只有当该键不存在
localhost:6379> setnx name rain
(integer) 0
localhost:6379> get name
"2"
localhost:6379> 
#键到期时设置值
localhost:6379> setex name 10 rain
OK
localhost:6379> get name
"rain"
localhost:6379> ttl name
(integer) 5
localhost:6379> ttl name
(integer) -2
localhost:6379> get name
(nil)
localhost:6379> 


Redis哈希
#设置多个哈希字段的多个值
localhost:6379> hmset person name donald age 20 sex man
OK
#判断一个哈希字段存在与否
localhost:6379> hexists person name
(integer) 1
#获取存储在指定的键散列字段的值
localhost:6379> hget person name
"donald"
localhost:6379> hget person age
"20"
localhost:6379> hget person sex
"man"
#获取存储在指定的键所有散列字段的值
localhost:6379> hgetall person
1) "name"
2) "donald"
3) "age"
4) "20"
5) "sex"
6) "man"
#获取所有在哈希字段
localhost:6379> hkeys person
1) "name"
2) "age"
3) "sex"
#获取哈希字段数
localhost:6379> hlen person
(integer) 3
#获取在哈希中的所有值
localhost:6379> hvals person
1) "donald"
2) "20"
3) "man"
#设置哈希字段的字符串值
localhost:6379> hset person name rain
(integer) 0
localhost:6379> hget person name
"rain"
#设置哈希字段的值,仅当该字段不存在
localhost:6379> hsetnx person name donald
(integer) 0
localhost:6379> hget person name
"rain"
localhost:6379> expire persion 100
(integer) 0
localhost:6379> expire person 100
(integer) 1
localhost:6379> ttl person
(integer) 97
localhost:6379> ttl person
(integer) 94
localhost:6379> 
#删除哈希key的字段
localhost:6379> hdel person name
(integer) 1
localhost:6379> hkeys person
1) "age"
2) "sex"
localhost:6379> 

Redis列表
#在列表栈,添加一个或多个值入栈
localhost:6379> lpush user donald
(integer) 1
localhost:6379> lpush user rain
(integer) 2
localhost:6379> lpush user jamel
(integer) 3
##获取列表栈中的值start, end,end为-1为取出所有
localhost:6379> lrange user 0 -1
1) "jamel"
2) "rain"
3) "donald"
localhost:6379> lpush user done
(integer) 4
localhost:6379> lrange user 0 -1
1) "done"
2) "jamel"
3) "rain"
4) "donald"
##将值添加到栈低
localhost:6379> rpush user doing
(integer) 5
localhost:6379> lrange user 0 -1
1) "done"
2) "jamel"
3) "rain"
4) "donald"
5) "doing"
localhost:6379> 
#获取列表的长度
localhost:6379> llen user
(integer) 5
#获取并取出列表中的栈顶第一个元素,
localhost:6379> lpop user
"done"
#取出并获取列表中的栈低最后一个元素,
localhost:6379> rpop user
"doing"
localhost:6379> llen user
(integer) 3
localhost:6379> lrange user 0 -1
1) "jamel"
2) "rain"
3) "donald"
#从一个列表其索引获取对应的元素
localhost:6379> lindex user 1
"rain"
#移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
localhost:6379> blpop user 1000
1) "user"
2) "jamel"
#移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
localhost:6379> brpop user 1000
1) "user"
2) "donald"
localhost:6379> 


Redis 集合(Set)

#向集合添加一个或多个成员
localhost:6379> sadd user1 "donald"
(integer) 1
localhost:6379> sadd user1 "jamel"
(integer) 1
#获取集合的成员数
localhost:6379> scard user1
(integer) 2
#返回集合中的所有成员
localhost:6379> smembers user1
1) "jamel"
2) "donald"
#移除并返回集合中的一个随机元素
localhost:6379> spop user1
"donald"
localhost:6379> smembers user1
1) "jamel"
localhost:6379> sadd user1 "donald"
(integer) 1
localhost:6379> smembers user1
1) "jamel"
2) "donald"
localhost:6379> sadd user2 "rain"
(integer) 1
localhost:6379> sadd user2 "rain"
(integer) 0
#判断 member 元素是否是集合 key 的成员
localhost:6379> sismember user1 "jamel"
(integer) 1
##返回给定所有集合的差集
localhost:6379> sdiff user1 user2
1) "jamel"
2) "donald"
localhost:6379> sdiff user2 user1
1) "rain"
返回给定所有集合的差集并存储在 user3 中
localhost:6379> sdiffstore user3 user1 user2
(integer) 2
localhost:6379> smembers user3
1) "jamel"
2) "donald"
localhost:6379> sadd user2 "doanld"
(integer) 1
#返回给定所有集合的交集
localhost:6379> sinter user1 user2
(empty list or set)
localhost:6379> sinter user1 user3
1) "jamel"
2) "donald"
localhost:6379> smembers user2
1) "doanld"
2) "rain"
localhost:6379> sinter uesr2 user1
(empty list or set)
#返回给定所有集合的交集并存储在 user4 中
localhost:6379> sinterstore user4 user1 user3
(integer) 2
localhost:6379> smembers user4
1) "jamel"
2) "donald"
##注意字符串要待引号"name",否则交集可能不正确
127.0.0.1:6379> sadd name "donald"
(integer) 1
127.0.0.1:6379> sadd name "jamel"
(integer) 1
127.0.0.1:6379> sadd name1 "jamel"
(integer) 1
127.0.0.1:6379> sinter name name1
1) "jamel"
127.0.0.1:6379> 

Redis 有序集合(sorted set)

#向有序集合添加一个或多个成员,或者更新已存在成员的分数
localhost:6379> zadd user1 1 donald
(integer) 1
localhost:6379> zadd user1 2 jamel
(integer) 1
#获取有序集合的成员数
localhost:6379> zcard user1
(integer) 2
#计算在有序集合中指定区间分数的成员数
localhost:6379> zcount user 0 1
(integer) 0
localhost:6379> zcount user 1 2
(integer) 0
localhost:6379> zcount user1 1 2
(integer) 2
localhost:6379> zcount user1 0 1
(integer) 1
localhost:6379> zadd user1 0 rain
(integer) 1
localhost:6379> zcount user1 0 1
(integer) 2
#通过索引区间返回有序集合成指定区间内的成员
localhost:6379> zrange user1 0 2 
1) "rain"
2) "donald"
3) "jamel"
localhost:6379> zrange user1 0 2 withscores
1) "rain"
2) "0"
3) "donald"
4) "1"
5) "jamel"
6) "2"
#返回有序集合中指定成员的索引
localhost:6379> zrank user1 donald
(integer) 1
#返回有序集中,成员的分数值
localhost:6379> zscore user1 donald
"1"
localhost:6379> zscore user1 jamel
"2"
localhost:6379> 
#移除有序集合中的一个或多个成员
localhost:6379> zrem user1 jamel
(integer) 1
localhost:6379> zrange user1 0 2 withscores
1) "rain"
2) "0"
3) "donald"
4) "1"
localhost:6379> 




Redis HyperLogLog

Redis 在 2.8.9 版本添加了 HyperLogLog 结构。
Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,
在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。
在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。
这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。
但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,
所以 HyperLogLog 不能像集合那样,返回输入的各个元素。
什么是基数?
比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7, 8}, 基数(不重复元素)为5。 
基数估计就是在误差可接受的范围内,快速计算基数。 
#添加指定元素到 HyperLogLog 中
localhost:6379> pfadd digital 1
(integer) 1
localhost:6379> pfadd digital 2
(integer) 1
localhost:6379> pfadd digital 4
(integer) 1
localhost:6379> pfadd digital 5
(integer) 1
localhost:6379> pfadd digital 5
(integer) 0
localhost:6379> pfadd digital 6
(integer) 1
localhost:6379> pfadd digital 7
(integer) 1
localhost:6379> pfadd digital 7
(integer) 0
#返回给定 HyperLogLog 的基数估算值。
localhost:6379> pfcount digital
(integer) 6
localhost:6379> 


##所有全局配置属性
localhost:6379> CONFIG GET *
  1) "dbfilename"
  2) "dump.rdb"
  3) "requirepass"
  4) "redis"
  5) "masterauth"
  6) ""
  7) "unixsocket"
  8) ""
  9) "logfile"
 10) "/redis/logs/redis.log"
 11) "pidfile"
 12) "/var/run/redis.pid"
 13) "maxmemory"
 14) "0"
 15) "maxmemory-samples"
 16) "5"
 17) "timeout"
 18) "0"
 19) "tcp-keepalive"
 20) "0"
 21) "auto-aof-rewrite-percentage"
 22) "100"
 23) "auto-aof-rewrite-min-size"
 24) "67108864"
 25) "hash-max-ziplist-entries"
 26) "512"
 27) "hash-max-ziplist-value"
 28) "64"
 29) "list-max-ziplist-entries"
 30) "512"
 31) "list-max-ziplist-value"
 32) "64"
 33) "set-max-intset-entries"
 34) "512"
 35) "zset-max-ziplist-entries"
 36) "128"
 37) "zset-max-ziplist-value"
 38) "64"
 39) "hll-sparse-max-bytes"
 40) "3000"
 41) "lua-time-limit"
 42) "5000"
 43) "slowlog-log-slower-than"
 44) "10000"
 45) "latency-monitor-threshold"
 46) "0"
 47) "slowlog-max-len"
 48) "128"
 49) "port"
 50) "6379"
 51) "tcp-backlog"
 52) "511"
 53) "databases"
 54) "16"
 55) "repl-ping-slave-period"
 56) "10"
 57) "repl-timeout"
 58) "60"
 59) "repl-backlog-size"
 60) "1048576"
 61) "repl-backlog-ttl"
 62) "3600"
 63) "maxclients"
 64) "10000"
 65) "watchdog-period"
 66) "0"
 67) "slave-priority"
 68) "100"
 69) "min-slaves-to-write"
 70) "0"
 71) "min-slaves-max-lag"
 72) "10"
 73) "hz"
 74) "10"
 75) "cluster-node-timeout"
 76) "15000"
 77) "cluster-migration-barrier"
 78) "1"
 79) "cluster-slave-validity-factor"
 80) "10"
 81) "repl-diskless-sync-delay"
 82) "5"
 83) "cluster-require-full-coverage"
 84) "yes"
 85) "no-appendfsync-on-rewrite"
 86) "no"
 87) "slave-serve-stale-data"
 88) "yes"
 89) "slave-read-only"
 90) "yes"
 91) "stop-writes-on-bgsave-error"
 92) "yes"
 93) "daemonize"
 94) "no"
 95) "rdbcompression"
 96) "yes"
 97) "rdbchecksum"
 98) "yes"
 99) "activerehashing"
100) "yes"
101) "repl-disable-tcp-nodelay"
102) "no"
103) "repl-diskless-sync"
104) "no"
105) "aof-rewrite-incremental-fsync"
106) "yes"
107) "aof-load-truncated"
108) "yes"
109) "appendonly"
110) "yes"
111) "dir"
112) "/redis/data"
113) "maxmemory-policy"
114) "noeviction"
115) "appendfsync"
116) "everysec"
117) "save"
118) "900 1 300 10 60 10000"
119) "loglevel"
120) "notice"
121) "client-output-buffer-limit"
122) "normal 0 0 0 slave 268435456 67108864 60 pubsub 33554432 8388608 60"
123) "unixsocketperm"
124) "0"
125) "slaveof"
126) ""
127) "notify-keyspace-events"
128) ""
129) "bind"
130) ""
localhost:6379> 

猜你喜欢

转载自donald-draper.iteye.com/blog/2346346