Index
A
- ACID properties
- about / An Internet-enabled world, The NoSQL primer
- atomicity / The NoSQL primer
- consistency / The NoSQL primer
- isolation / The NoSQL primer
- durability / The NoSQL primer
- activate command
- about / The activate command
- implementing / Implementation of ActivateCommand
- advanced command, lists
- BLPOP / The Lists data type
- BRPOP / The Lists data type
- RPOPLPUSH / The Lists data type
- BRPOPLPUSH / The Lists data type
- analytical data
- about / Classifying data
- data complexity / Classifying data
- data quantity / Classifying data
- persistence / Classifying data
- CAP property / Classifying data
- usability / Classifying data
- AnalyticsDBManager class / AnalyticsDBManager
- AOF option
- about / Persisting via the AOF option
- AOF persistence
- Redis, configuring for / Configuring Redis for AOF persistence
- use case / Use case for using AOF persistence
- append-only file (AOF)
- about / Maintaining ephemeral data
- archive command
- about / The archive command
- ArchiveCommand
- implementing / Implementation of ArchiveCommand
- ArchiveCommandHandler
- implementing / Implementation of ArchiveCommandHandler
B
- BASE properties
- about / The NoSQL primer
- basically available / The NoSQL primer
- soft state / The NoSQL primer
- eventually consistent / The NoSQL primer
- BGREWRITEAOF command / Dataset handling commands in Redis
- BGSAVE command / Dataset handling commands in Redis
- big O notation
- about / Data structures
- bitmap
- about / The string data type, The BitSet or bitmap data type
- use case scenario / Use case scenario
- BitSet
C
- cache data
- about / Classifying data
- data complexity / Classifying data
- data quantity / Classifying data
- persistence / Classifying data
- CAP property / Classifying data
- usability / Classifying data
- CAP theorem
- about / An Internet-enabled world
- Carriage Return and Line Feeds (CRLF) / Communication protocol – RESP
- Cassandra
- features / Salient features of HBase and Cassandra
- Cassandra Query Language (CQL) / Salient features of HBase and Cassandra
- catalogue management
- about / Catalogue management
- classes, small test client
- Command / Communication protocol – RESP
- GetCommand / Communication protocol – RESP
- SetCommand / Communication protocol – RESP
- ConnectionProperties / Communication protocol – RESP
- TestClient / Communication protocol – RESP
- CLIENTKILL command / Dataset handling commands in Redis
- CLIENT LIST command / Dataset handling commands in Redis
- client node commands
- about / Client node commands
- register / The register command
- activate / The activate command
- set / The set command
- get / The get command
- del / The del command
- status / The status command
- passivate / The passivate command
- reactivate / The reactivate command
- archive / The archive command
- sync / The sync command
- reconnect / The reconnect command
- CLIENT SETNAME command / Dataset handling commands in Redis
- clone command
- about / The clone command
- CloneNodeCommand
- implementing / Implementation of CloneNodeCommand
- CloneNodeCommandHandler
- implementing / Implementation of CloneNodeCommandHandler
- cluster pattern
- master-master / Cluster pattern – master-master
- master-slave / Cluster pattern – master-slave
- clusters
- about / Clusters
- column-oriented NoSQL
- about / Column-oriented NoSQL
- reference link / Column-oriented NoSQL
- commands, for managing Lua scripts
- EVAL / Brief introduction on Lua
- EVALSHA / Brief introduction on Lua
- SCRIPT EXISTS / Brief introduction on Lua
- SCRIPT FLUSH / Brief introduction on Lua
- SCRIPT KILL / Brief introduction on Lua
- SCRIPT LOAD / Brief introduction on Lua
- commands, for messaging framework
- PUBLISH / Real-time messaging (PUB/SUB)
- SUBSCRIBE / Real-time messaging (PUB/SUB)
- PSUBSCRIBE / Real-time messaging (PUB/SUB)
- PUBSUB / Real-time messaging (PUB/SUB)
- commands, transactions
- MULTI / Transactions in Redis
- EXEC / Transactions in Redis
- WATCH / Transactions in Redis
- UNWATCH / Transactions in Redis
- DISCARD / Transactions in Redis
- communication protocol
- computer cluster
- configuration management
- about / Configuration management
- gossip server / Gossip server
- configuration parameters, Unix environment
- port 6379 / Introduction to redis.conf
- # bind 127.0.0.1 / Introduction to redis.conf
- timeout 0 / Introduction to redis.conf
- tcp-keepalive 0 / Introduction to redis.conf
- loglevel notice / Introduction to redis.conf
- logfile stdout / Introduction to redis.conf
- syslog-enabled no / Introduction to redis.conf
- dir / Introduction to redis.conf
- configurations, VM capability
- connection management
- about / Connection management
- functions / Connection management
- control statements, Lua
- if then else statement / Brief introduction on Lua
- repeat statement / Brief introduction on Lua
- control statements and loops, LUA
- if then else statement / Brief introduction on Lua
- while loop / Brief introduction on Lua
- repeat statement / Brief introduction on Lua
- CouchDB (Couchbase)
- about / Document-oriented NoSQL
- features / Salient features of MongoDB and CouchDB
D
- data
- classifying / Classifying data
- data clean commands, Hashes
- HDEL / The Hashes data type
- data clean commands, lists
- LTRIM / The Lists data type
- RPOP / The Lists data type
- LREM / The Lists data type
- LPOP / The Lists data type
- data clean commands, Sorted Sets
- ZREM / The Sorted Sets data type
- ZREMRANGEBYRANK / The Sorted Sets data type
- ZREMRANGEBYSCORE / The Sorted Sets data type
- data clean commands, string
- SET PX/ EX / The string data type
- SETEX / The string data type
- data clean commands. Sets
- SPOP / The Sets data type
- SREM / The Sets data type
- data handler layer, gossip server
- about / The data handler layer
- registration holder / The data handler layer
- activation holder / The data handler layer
- passivation holder / The data handler layer
- configuration store / The data handler layer
- archive store / The data handler layer
- JedisUtil.java / JedisUtil.java
- Data Interpretation
- about / An Internet-enabled world
- data management
- about / Redis configuration – data management
- RDB option / The RDB option
- AOF option / The AOF option
- VM overcommit memory / VM overcommit memory
- dataset handling commands, Redis
- about / Dataset handling commands in Redis
- FLUSHDB / Dataset handling commands in Redis
- FLUSHALL / Dataset handling commands in Redis
- MONITOR / Dataset handling commands in Redis
- SAVE / Dataset handling commands in Redis
- BGSAVE / Dataset handling commands in Redis
- LASTSAVE / Dataset handling commands in Redis
- SHUTDOWN SAVE/NOSAVE / Dataset handling commands in Redis
- DBSIZE / Dataset handling commands in Redis
- BGREWRITEAOF / Dataset handling commands in Redis
- CLIENT SETNAME / Dataset handling commands in Redis
- CLIENT LIST / Dataset handling commands in Redis
- CLIENTKILL / Dataset handling commands in Redis
- DEBUG sEGFAULT / Dataset handling commands in Redis
- SLOWLOG / Dataset handling commands in Redis
- data structures
- about / Data structures
- notations, for classification / Data structures
- data types, ephemeral data
- event data / Maintaining ephemeral data
- transient business data / Maintaining ephemeral data
- session data / Maintaining ephemeral data
- data types, Redis
- about / Data types in Redis
- string / The string data type
- BitSet / The BitSet or bitmap data type
- bitmap / The BitSet or bitmap data type
- Hashes / The Hashes data type
- lists / The Lists data type
- Sets / The Sets data type
- Sorted Sets / The Sorted Sets data type
- DBSIZE command / Dataset handling commands in Redis
- DEBUG sEGFAULT command / Dataset handling commands in Redis
- del command
- about / The del command
- delete command
- implementing / Implementation of DeleteCommand
- DeleteCommandHandler
- implementing / Implementation of DeleteCommandHandler
- document-oriented NoSQL
- about / Document-oriented NoSQL
- Dump key command / Dump and restore
E
- ECHO function, Redis
- about / Redis ECHO and PING
- Eclipse
- URL, for downloading / Installing Jedis and creating an environment
- environment
- creating / Installing Jedis and creating an environment
- ephemeral data
- maintaining / Maintaining ephemeral data
- about / Maintaining ephemeral data
- data types / Maintaining ephemeral data
- Erlang/OTP / Salient features of MongoDB and CouchDB
- event data / Maintaining ephemeral data
- eventual consistency
- about / Master-slave data replication
F
- FetchData class
- characteristics / Performance pattern – high reads
- FLUSHALL command / Dataset handling commands in Redis
- FLUSHDB command / Dataset handling commands in Redis
- for loop / Brief introduction on Lua
- functions, connection management
- AUTH / Connection management
- ECHO / Connection management
- PING / Connection management
- QUIT / Connection management
- SELECT / Connection management
G
- get command
- about / The get command, The get command
- GetCommand
- implementing / Implementation of GetCommand
- GetCommandHandler
- implementing / Implementation of GetCommandHandler
- GetNodeDataCommand
- implementing / Implementation of GetNodeDataCommand
- GetNodeDataCommandHandler
- implementing / Implementation of GetNodeDataCommandHandler
- gossip server
- about / Configuration management, Gossip server
- node / Node
- layered design / Layered design
- listeners / Listeners
- data handler layer / The data handler layer
- Gossip Server (Admin)
- about / Gossip server
- graph-oriented NoSQL
- about / Graph-oriented NoSQL
H
- Hashes
- about / The Hashes data type
- setters and getters commands / The Hashes data type
- data clean commands / The Hashes data type
- utility commands / The Hashes data type
- use case scenario / Use case scenario
- HBase
- features / Salient features of HBase and Cassandra
- Hello World, in Redis
- about / Hello World in Redis
- Hello World, Java
- about / Hello World using Java
- program, writing / Writing the program
- server, shutting down / Shutting down the server
- Hello World, redis-cli
- about / Hello World using redis-cli
I
- if then else statement / Brief introduction on Lua
- installing
- Redis, on Windows / Installing Redis on Windows
- Redis, on Mac OS / Installing Redis on Mac OS
- Jedis / Installing Jedis and creating an environment
- Internet-enabled world
- about / An Internet-enabled world
J
- Java
- Hello World / Hello World using Java
- Jedis
- JedisUtil.java class / JedisUtil.java
K
- key value-oriented NoSQL
- about / Key value-oriented NoSQL
- kill command
- about / The kill command
- KillNodeCommand
- implementing / Implementation of KillNodeCommand
- KillNodeCommandHandler
- implementing / Implementation of KillNodeCommandHandler
L
- LASTSAVE command / Dataset handling commands in Redis
- layered design, gossip server
- about / Layered design
- Shell layer / Layered design
- Command layer / Layered design
- Command Handler layer / Layered design
- Data Handler layer / Layered design
- Shell / Shell
- listener managers
- about / Listener manager
- listeners, gossip server
- about / Listeners
- listener managers / Listener manager
- lists
- about / The Lists data type
- setters and getters commands / The Lists data type
- data clean commands / The Lists data type
- utility commands / The Lists data type
- advanced command / The Lists data type
- use case scenario / Use case scenario
- loops, Lua
- while loop / Brief introduction on Lua
- for loop / Brief introduction on Lua
- LUA
- types / Brief introduction on Lua
- values / Brief introduction on Lua
- loops / Brief introduction on Lua
- control statements / Brief introduction on Lua
- working, with Redis / Brief introduction on Lua
- Lua
- about / Scripting in Redis
- LUA scripts
- commands, for managing / Brief introduction on Lua
M
- Mac OS
- Redis, installing on / Installing Redis on Mac OS
- master-master cluster pattern
- about / Cluster pattern – master-master
- performance / Performance
- availability / Availability
- scalability / Scalability
- manageability / Manageability
- security / Security
- drawbacks / Drawbacks of this pattern
- sharding / Sharding
- sharding, observations / Observations, Cluster pattern – master-slave
- master-slave cluster pattern
- about / Cluster pattern – master-slave
- performance / Performance
- availability / Availability
- scalability / Scalability
- manageability / Manageability
- security / Security
- drawbacks / Drawbacks of this pattern
- master-slave data replication
- about / Master-slave data replication
- working / Master-slave data replication
- high reads, performance pattern / Performance pattern – high reads
- high writes, performance pattern / Performance pattern – high writes
- master node
- setting up / Setting master and slave nodes
- master node commands
- about / Master node commands
- start / The start command
- stop / The stop command
- status / The status command
- get / The get command
- msg / The msg command
- kill / The kill command
- clone / The clone command
- MasterSlaveLoadTest class
- characteristics / Performance pattern – high reads
- message and event data
- about / Classifying data
- data complexity / Classifying data
- data quantity / Classifying data
- persistence / Classifying data
- CAP property / Classifying data
- usability / Classifying data
- MessageCommand
- implementing / Implementation of MessageCommand
- MessageCommandHandler
- implementing / Implementation of MessageCommandHandler
- messaging framework
- commands / Real-time messaging (PUB/SUB)
- meta data
- about / Classifying data
- data complexity / Classifying data
- data quantity / Classifying data
- persistence / Classifying data
- CAP property / Classifying data
- usability / Classifying data
- MongoDB
- about / Document-oriented NoSQL
- features / Salient features of MongoDB and CouchDB
- MONITOR command / Dataset handling commands in Redis
- msg command
- about / The msg command
N
- node, gossip server / Node
- nonephemeral data
- maintaining / Maintaining nonephemeral data
- NoSQL
- about / The NoSQL primer
- use cases / Use cases of NoSQL
- notations, data structure classification
- O (1) / Data structures
- O (N) / Data structures
- O (log (N)) / Data structures
- O (log (N) + M) / Data structures
- O (M log (M)) / Data structures
O
- online analytics
- about / Online analytics
- Simple E-Commerce / Implementation – simple e-commerce
- ProductApp servlet, implementing / ProductApp
- UserApp servlet, implementing / UserApp
- RedisDBManager class / RedisDBManager
- ProductDBManager class / ProductDBManager, AnalyticsDBManager
- ShoppingCartDBManager class / ShoppingCartDBManager
- UserCartDBManager class / UserCartDBManager
P
- passivate command
- about / The passivate command
- PassivateCommand
- implementing / Implementation of PassivateCommand
- PassivateCommandHandler
- implementing / Implementation of PassivateCommandHandler
- Passive state / The data handler layer
- persistence handling, Redis
- about / Persistence handling in Redis
- via RDB option / Persisting via the RDB option
- via AOF option / Persisting via the AOF option
- PING function, Redis
- about / Redis ECHO and PING
- pipeline
- about / Pipelines in Redis
- versus transactions / Pipeline versus transaction
- and transactions / Pipeline and transaction
- ProductApp servlet
- about / ProductApp
- CommisionProductCommand / ProductApp
- display command / ProductApp
- DisplayTagCommand / ProductApp
- UpdateTagCommand / ProductApp
- VisitTodayCommand / ProductApp
- PurchasesTodayCommand / ProductApp
- TagHistoryCommand / ProductApp
- ProductDBManager class
- about / ProductDBManager
- PULL-based design / Configuration management
- PumpData class
- characteristics / Performance pattern – high reads
- PUSH-based design / Configuration management
R
- RDBMS
- about / An Internet-enabled world
- RDB persistence
- Redis, configuring for / Configuring Redis for RDB persistence
- use case / Use case for using RDB persistence
- ReactivateCommand
- implementing / Implementation of ReactivateCommand
- reactivate command
- about / The reactivate command
- ReactivateCommandHandler
- implementing / Implementation of ReactivateCommandHandler
- READ API component / Security
- real time messaging (PUB/SUB)
- about / Real-time messaging (PUB/SUB)
- ReconnectCommand
- implementing / Implementation of ReconnectCommand
- reconnect command
- about / The reconnect command
- ReconnectCommandHandler
- implementing / Implementation of ReconnectCommandHandler
- Redis
- nonfunctional requirements, as key-value datastore / How does Redis fare in some of the nonfunctional requirements as a key-value datastore?
- installing, on Windows / Installing Redis on Windows
- installing, on Mac OS / Installing Redis on Mac OS
- Hello World / Hello World in Redis
- test Hello World program, loading in / Loading a test Hello World program in Redis
- data types / Data types in Redis
- configuring, for RDB persistence / Configuring Redis for RDB persistence
- configuring, for AOF persistence / Configuring Redis for AOF persistence
- dataset handling commands / Dataset handling commands in Redis
- about / Maintaining ephemeral data
- Redis-2.6
- about / Setting master and slave nodes
- Redis-2.6.slave
- about / Setting master and slave nodes
- redis-2.8.zip file
- URL, for downloading / Installing Redis on Windows
- redis-cli
- Hello World / Hello World using redis-cli
- redis.conf
- about / Introduction to redis.conf
- Redis 2.4
- about / Redis 2.4
- Redis 2.6, to 2.8
- about / Redis 2.6 to 2.8
- Dump key command / Dump and restore
- Restore command / Dump and restore
- snapshotting / Snapshotting
- Redis 3.0
- about / Redis 3.0
- Redis authentication
- about / Redis authentication
- RedisDBManager class / RedisDBManager
- Redis protocol / Setting master and slave nodes
- Redis Sentinel
- configuring / Configuring Redis Sentinel
- REdis Serialization Protocol (RESP) / How does Redis fare in some of the nonfunctional requirements as a key-value datastore?
- register command
- about / The register command
- implementing / Implementation of RegisterCommand
- register command handler
- implementing / Implementation of RegisterCommandHandler
- related commands, PUBSUB
- PUBSUB CHANNELS [pattern] / Real-time messaging (PUB/SUB)
- PUBSUB NUMSUB [channel] / Real-time messaging (PUB/SUB)
- PUBSUB NUMPAT / Real-time messaging (PUB/SUB)
- PUNSUBSCRIBE / Real-time messaging (PUB/SUB)
- UNSUBSCRIBE / Real-time messaging (PUB/SUB)
- reliable messaging
- use case / Use case – reliable messaging
- repeat statement / Brief introduction on Lua
- resources, Jedis client
- connection pool / Shutting down the server
- connection / Shutting down the server
- request life cycle / Shutting down the server
- RESP
- about / Communication protocol – RESP
- Restore command / Dump and restore
S
- SAVE command / Dataset handling commands in Redis
- scripting
- about / Scripting in Redis
- SELECT function, Redis
- about / Redis SELECT
- Sentinel
- about / Configuring Redis Sentinel
- session data / Maintaining ephemeral data
- session management
- about / Session management
- set command
- about / The set command
- implementing / Implementation of SetCommand
- SetCommandHandler
- implementing / Implementation of SetCommandHandler
- Sets
- about / The Sets data type
- setters and getters commands / The Sets data type
- data clean commands / The Sets data type
- utility commands / The Sets data type
- use case scenario / Use case scenario
- setters and getters commands, Hashes
- HGET / The Hashes data type
- HGETALL / The Hashes data type
- HSET / The Hashes data type
- HMGET / The Hashes data type
- HMSET / The Hashes data type
- HVALS / The Hashes data type
- HSETNX / The Hashes data type
- HKEYS / The Hashes data type
- setters and getters commands, lists
- LPUSH / The Lists data type
- RPUSH / The Lists data type
- LPUSHX / The Lists data type
- RPUSHX / The Lists data type
- LINSERT / The Lists data type
- LSET / The Lists data type
- LRANGE / The Lists data type
- setters and getters commands, Sorted Sets
- ZADD / The Sorted Sets data type
- ZRANGE / The Sorted Sets data type
- ZRANGEBYSCORE / The Sorted Sets data type
- ZREVRANGEBYSCORE / The Sorted Sets data type
- ZREVRANK / The Sorted Sets data type
- ZREVRANGE / The Sorted Sets data type
- setters and getters commands, string
- Get key / The string data type
- Set key / The string data type
- SETNX key / The string data type
- GETSET key / The string data type
- MGET key1 key / The string data type
- MSET key / The string data type
- MSETNX key / The string data type
- setters and getters commands. Sets
- SADD / The Sets data type
- sharding
- about / Sharding
- shards
- about / Performance
- Shell
- about / Shell, The register command
- ShoppingCartDBManager class / ShoppingCartDBManager
- SHUTDOWN SAVE/NOSAVE command / Dataset handling commands in Redis
- Simple Dynamic String (SDS) / The string data type, The Sets data type
- Simple E-Commerce
- session management / Simple e-commerce – a Redis backed e-commerce site
- catalogue management / Simple e-commerce – a Redis backed e-commerce site
- Online Analytics / Simple e-commerce – a Redis backed e-commerce site
- requisites / Simple e-commerce – a Redis backed e-commerce site
- simple test client, Redis
- ConnectionProperties.java class / Communication protocol – RESP
- TestClient.java client / Communication protocol – RESP
- slave node
- setting up / Setting master and slave nodes
- SLOWLOG command / Dataset handling commands in Redis
- snapshotting
- about / Snapshotting
- Sorted Sets
- about / The Sorted Sets data type
- setters and getters commands / The Sorted Sets data type
- data clean commands / The Sorted Sets data type
- utility commands / The Sorted Sets data type
- use case scenario / Use case scenario
- start command
- about / The start command
- StartMasterCommand
- implementing / Implementation of StartMasterCommand
- StatusCommand
- implementing / Implementation of StatusCommand, Implementation of StatusCommand
- status command
- about / The status command, The status command
- StatusCommandHandler
- stop command
- about / The stop command
- StopMasterCommand
- implementing / Implementation of StopMasterCommand
- string
- about / The string data type
- setters and getters commands / The string data type
- data clean commands / The string data type
- utility commands / The string data type
- SyncCommand
- implementing / Implementation of SyncCommand
- sync command
- about / The sync command
- SyncCommandHandler
- implementing / Implementation of SyncCommandHandler
T
- table joins
- about / Graph-oriented NoSQL
- test Hello World program
- loading, in Redis / Loading a test Hello World program in Redis
- Time to Live (TTL)
- about / Maintaining ephemeral data
- time to live(TTL) / Session management
- transactional data
- about / Classifying data
- data complexity / Classifying data
- data quantity / Classifying data
- persistence / Classifying data
- CAP property / Classifying data
- usability / Classifying data
- transactions
- about / Transactions in Redis
- commands / Transactions in Redis
- versus pipeline / Pipeline versus transaction
- and pipeline / Pipeline and transaction
- transient business data / Maintaining ephemeral data
- types and values, Lua
- nil / Brief introduction on Lua
- booleans / Brief introduction on Lua
- numbers / Brief introduction on Lua
- string / Brief introduction on Lua
- tables / Brief introduction on Lua
U
- use case, AOF persistence / Use case for using AOF persistence
- use case, RDB persistence / Use case for using RDB persistence
- use case, reliable messaging / Use case – reliable messaging
- USECASE-1 mode / Performance pattern – high reads
- USECASE-2 mode / Performance pattern – high reads
- use cases, NoSQL / Use cases of NoSQL
- UserApp servlet
- about / UserApp
- RegistrationCommand / UserApp
- LoginCommand / UserApp
- MyDataCommand / UserApp
- EditMyDataCommand / UserApp
- BrowseCommand / UserApp
- RecommendByProductCommand / UserApp
- Add2CartCommand / UserApp
- ShowMyCartCommand / UserApp
- EditCartCommand / UserApp
- BuyCommand / UserApp
- MyStatusCommand / UserApp
- MyPurchaseHistoryCommand / UserApp
- ReloginCommand / UserApp
- UserCartDBManager class / UserCartDBManager
- utility commands, Hashes
- HEXISTS / The Hashes data type
- HINCRBY / The Hashes data type
- HINCRBYFLOAT / The Hashes data type
- HLEN / The Hashes data type
- utility commands, lists
- LINDEX / The Lists data type
- LLEN / The Lists data type
- utility commands, Sorted Sets
- ZCARD / The Sorted Sets data type
- ZCOUNT / The Sorted Sets data type
- ZINCRBY / The Sorted Sets data type
- ZINTERSTORE / The Sorted Sets data type
- ZRANK / The Sorted Sets data type
- ZSCORE / The Sorted Sets data type
- ZUNIONSTORE / The Sorted Sets data type
- utility commands, string
- APPEND / The string data type
- STRLEN / The string data type
- SETRANGE / The string data type
- GETRANGE / The string data type
- DECR / The string data type
- DECRBY / The string data type
- INCR / The string data type
- INCRBY / The string data type
- INCRBYFLOAT / The string data type
- utility commands. Sets
- SCARD / The Sets data type
- SDIFF / The Sets data type
- SDIFFSTORE / The Sets data type
- SINTER / The Sets data type
- SINTERSTORE / The Sets data type
- SISMEMBER / The Sets data type
- SMOVE / The Sets data type
- SRANDMEMBER / The Sets data type
- SUNION / The Sets data type
- SUNIONSTORE / The Sets data type
V
- virtual memory (VM)
- about / Redis 2.4
W
- while loop / Brief introduction on Lua
- Windows
- Redis, installing on / Installing Redis on Windows
- WRITE API component / Security